C语言数组与指针的关系

有数组 int a[10],那么a, &a[0], &a这三个都是指针, 但是意义却不相同,如下:
1、三者在数值上相同。
2、a, &a[0]都表示数组第一个元素的地址
3、&a指的是整个数组的首地址(数值大小上与前两个一样)
4、真正体现区别是在地址偏移的时候,假设a, &a[0], &a值都是0XBFFF 0000, 那么a + 1 表示的地址是0XBFFF 0004, &a[0] + 1表示的地址是0XBFFF 0004, &a + 1表示的地址是 0XBFFF0000 + 4*10
5、数组名a在两种情况下代表整个数组,1:sizeof(a) = 40 2: &a
6、对&a解地址表示的是数组第一个元素的地址,对数组第一个元素的地址再解地址是数组第一个元素。(这点容易迷糊,很多时候误以为&a是个地址,那么对它解地址就是数据了,其实不是,解地址后仍然是一个地址,是数组第一个元素的地址)

你可能感兴趣的:(C)