以上代码的输出结果为:
1309012
1309016
1309032
1) 对指针进行加1操作,得到的是下一个元素的地址,一个类型为T的指针移动,以sizeof(T)为移动单位
a是数据首元素的地址,即&a[0],类型为int*,所以a + 1为a + sizeof(int)
&a是数组的地址,类型为int(*)[5],所以&a + 1为&a + sizeof(int) * 5
a与&a两者都是是指针,且值相同,但指向类型不同。
2) 数组首地址a不能作为左值,只能作为右值。
本文通过一个C++示例程序详细解析了数组与指针的区别,特别是数组名作为指针时的行为特性,以及不同类型指针在内存中偏移的不同表现。
以上代码的输出结果为:
1309012
1309016
1309032
1) 对指针进行加1操作,得到的是下一个元素的地址,一个类型为T的指针移动,以sizeof(T)为移动单位
a是数据首元素的地址,即&a[0],类型为int*,所以a + 1为a + sizeof(int)
&a是数组的地址,类型为int(*)[5],所以&a + 1为&a + sizeof(int) * 5
a与&a两者都是是指针,且值相同,但指向类型不同。
2) 数组首地址a不能作为左值,只能作为右值。
9万+
603

被折叠的 条评论
为什么被折叠?