您的位置:首页 > 其它

数组指针定义的理解

2016-04-04 11:18 190 查看
定义一个数组
int a[4]={0,1,2,3};
再定义一个数组指针<pre name="code" class="cpp">int (*p)[4]=&a;
这里使用&a,而不使用a,是因为数组是c内嵌数据类型,它代表整个数组,而a仅代表数组首元素地址,虽然printf打印出地址是相同的,但含义不同。

这里定义需要两个表达式数据类型对应,数组指针应该指向整个数组,同理,定义int *p,就应该使p=a了。
延伸一下,怎么用一个一维的数组指针访问二维数组呢?
定义一个二维数组
int b[2][2]={0,1,2,3}
int (*q)[2]=b;
这里用b,而不用&b,也是数据类型对应的需要,首先二维数组可以看做若干行一位数组,而b则代表了首行一位数组,&b则代表整个二维数组,但是我们的
数组指针只是一维的,所以用b,如果用printf打印b+1和&b+1可以看到b+1跨过的是一行一维数组所占字节,而&b+1则跨过整个二维数组所占字节,q+1与
b+1相同。
综上,定义指针时要遵循数据类型匹配。(个人理解,可能有误)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: