C++ | 数组与指针

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(不能自增)就可以看到其区别了。

 

posted on 2015-10-01 19:03  Excavator  阅读(132)  评论(0编辑  收藏  举报

导航