a和&a有什么区别?

a和&a有什么区别?
假设有这么一个数组int a[10]和 int (*p)[10] = &a
用这两个例子来说明a和&a的区别
1.a是数组名,它是数组首元素的地址, +1表示的是地址值加上一个int类型的字节大小,如果a的值是0x00000001,加1操作后变为0x00000005, 即 (a + 1)= a[1]
2. &a是数组的指针,其类型就是int (
)[10] (就是数组指针),其加上1时,系统会认为数组首地址加上整个数组的大小(10个int型变量),值为数组a尾元素后一个元素的地址.
3. 那么呢?由此会一个问题:int *p[10]与int (*p)[10]的区别?
int (*p)[10] 可以看作是int A[10],而int *p[10]可以看作是int *A
所以int *p[10]是一个指针数组,p的字节数是40了,p是一个指向整形变量的指针数组
int(*p)[10]是指向一个数组的指针,即数组指针;既然q是一个指针那么他的字节数就是4

猜你喜欢

转载自blog.csdn.net/weixin_43595755/article/details/121087153