首先引进遇到的问题
输出可以发现a[0]与a[1]的地址相差4(int占4个字节),那么有个问题:a[0]与a[1]的地址相差是4吗?
这里需要引入一个概念
直接用内存地址相加减,通常用来计算内存的偏移量。
如果内存地址不是在同一块连续的内存块中,那么计算的结果就是字节数,但是这样的计算基本是无意义的。
如果是同一块连续的内存块中的地址计算,就是数组的偏移量。
所以输出printf("%d",&a[1]-&a[0])答案是1,并非4。
首先引进遇到的问题
输出可以发现a[0]与a[1]的地址相差4(int占4个字节),那么有个问题:a[0]与a[1]的地址相差是4吗?
这里需要引入一个概念
直接用内存地址相加减,通常用来计算内存的偏移量。
如果内存地址不是在同一块连续的内存块中,那么计算的结果就是字节数,但是这样的计算基本是无意义的。
如果是同一块连续的内存块中的地址计算,就是数组的偏移量。
所以输出printf("%d",&a[1]-&a[0])答案是1,并非4。
相关文章: