为了账号安全,请及时绑定邮箱和手机立即绑定

如何理解指向指针的指针变量**p,和指向字符串类型的指针变量char *p,,以及*p[]和(*p)[]

如何理解指向指针的指针变量**p,和指向字符串类型的指针变量char *p,,以及*p[]和(*p)[]

级数 2015-11-20 13:50:41
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编译时过不了的)

查看完整回答
反对 回复 2015-11-21
  • 级数
    级数
    其实例2可以赋值的,我用的是codeblock,就可以用p=&a来赋值。
  • 1 回答
  • 0 关注
  • 2502 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信