file 1:C语言中如下定义:char *name[]={"abc","edf","ghi"};char **p;int i;为什么可以赋值p=name+i(是不是等同于p=name[i]?);而不是p=*name+i;或者*p=name+i?file 2:int a[4]={1,3,5,7};int (*p)[4];为什么可以赋值p=&a;而不可以赋值p=a(程序提示警告,但可以编译运行)?
1 回答
已采纳
wait_3
TA贡献3条经验 获得超0个赞
首先创建数组,数组就是就是一个指针指向一组内存空间,比如a[3],a就是一个指针。
那么上述例子1的p和name就是同一个等级的指针,都是指向指针的指针,p = name + i,并不等同于p = name[i];
p = name + i只是将name这个指针存储的地址加上i后赋值给p,p = name[i]是错误的语法。
例子2中 a是一个指针,p则是指向一个指针数组的指针,是没法赋值的(我用visual studio 2010编译时过不了的)
- 1 回答
- 0 关注
- 2502 浏览
添加回答
举报
0/150
提交
取消