C/C++的数组名

数组名相当于指向数组第一个元素的地址。
数组名不是变量,是地址常量,不能为其赋值。

如下:
1)一维数组中
对于数组 a[5] = {1, 2, 3, 4, 5};
数组名a相当于指向第一个元素a[0]的指针。即 a 与 &a[0] 等价。

2)二维数组中

int a[2][3] = {1, 2, 3, 4, 5, 6};
int __; // 完成对p的定义
p = a;

分析 p = a;
a 相当于指向a[2][3] 的“第一个元素”的地址
所谓“第一个元素”是指第一个“包含3个int型元素的一维数组”
所以a 相当于一个“包含3个int型元素的一维数组”的地址
因此p的基类型应该是:”包含3个int型元素的一维数组“

定义一个指向“包含3个int 型元素的一维数组”的指针变量:
int (*p)[3];

注意:
int *p = &a[0];
a++是没有意义的,但p++会引起p的变化
p可以指向数组最后一个元素以后的元素
指针做加减运算时一定注意有效的范围。

int a[5];
int *p = &a[0];
p--;
*p = 6; // damage

posted @ 2015-01-06 08:55  阿青1987  阅读(283)  评论(0编辑  收藏  举报