【C语言】请问这个“int (*p)[3]”表示的是指向数组的指针么?

请问这个该怎么给它赋值?还有,指向数组的直接就int *p,然后指向第一个元素不就行了么。为什么还要用那个?

楼上说错了,p本质是指针。不是数组。

p是指向数组的指针,而这个数组是含有3个整型单元的数组。

比如,

#include <stdio.h>
int main(int argc, char *argv[])
{
int (*p)[3];
int a[3] = { 0, 1, 2 };
int b[2][3] = {{1, 2, 3}, {4, 5, 6}};

p = &a;
printf("%d.%d.%d\n", (*p)[0], (*p)[1], (*p)[2]);

p = b; //p类似(注意是类似)二级指针 
printf("%d-%d-%d\n", p[0][0], p[0][1], p[0][2]);

return 0;
}

追问

p = &a;这句,为什么要加&呢?数组名不就是代表地址???
你下面的p=b;就没有加啊。我试过像p=a;那样赋值,但编译器会报错。

追答

p是二级指针,a是一级指针,b也是二级指针。
问这些问题的时候麻烦看看我上面回答的文字。
多说一句,数组名a代表的是数组首元素的地址。&a代表整个数组的首地址,虽然它们值是一样的,但含义是不一样的!

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网