数组元素个数
Line13 这里的 p 是指针变量,p[0] 应该不存在的,怎么能这样用?
- C 语言中可以用指针表示数组的每一个元素。本质上,对同一个对象有两种不同的符号表示。如定义:
a[n] ~ *(a+n)
,即寻址到内存 a,然后移动 n 个单元,再取出数组。故p[0] ~ *(p+0)
,该值的类型为 int - num2 的计算在语法上没有任何问题,但是 32 位机和 64 位运行结果不同,在 32 位机器出现结果正常,64 位机出现错误结果。这是因为:64 位机中,int* 的指针为 8 个字节
a 和 &a 的区别
- a 和 &a 输出结果相同,但是二者数据类型不同!
a
:数组首元素的地址,同时与整个数组地址重合。但其不能代表整个数组,只能代表起始元素的地址&a
:整个数组的地址
- a+1 和 &a+1 地址上差了 20 个字节
a+1
:a + sizeof(a[0])
&a+1
:整块数组所占字节数总数为单位 1