标签:
int arr[4]; // arr 相当于是一个指针常量,及 arr 不能变,但是指向的地址对应的数据可以改变
int *p = arr; // p 是一个指向 int 数据的指针,步长为 sizeof(int)
arr 和 &arr:
- 值相同
- 意义不同(即变量类型不同),&arr 整个数组的首地址,arr 是数组第一个元素的首地址
由此,arr+1 和 (&arr)+1 也就不用了。arr 步长为int,而 &arr 步长为 int[4]。
int arr[2][4];
int* p = arr; // p 是一个指向 int 的指针,步长为1
int (*p1)[4] = arr; // p1 是一个数组指针(其实叫行指针更贴切),步长为4
int* p2[2]; // p2 是一个指针数组
p2[0] = arr[0];
p2[1] = arr[1];
数组和指针:
数组在进入函数之后会退化成指针,引用可以避免,但是目前我还没有发现这样做的意义何在。
sizeof 或 +1(不能自增)就可以看到其区别了。
标签:
原文地址:http://www.cnblogs.com/excavator/p/4850879.html