一个关于C++指针的问题

#include<iostream.h>voidmain(){inti;char*name[]={"TurboC","VisualC++","BorlandC++"};c... #include<iostream.h>
void main()
{int i;
char *name[]={"Turbo C","Visual C++","Borland C++"};
char **p;
cout<<"第1遍输出:"<<endl;
for(i=0;i<3;i++)
{p=name+i;
cout<<*p<<"\n";
}
cout<<"第2遍输出:"<<endl;
for(i=0;i<3;i++)
cout<<name[i]<<endl;
}
char **p是什么意思?
展开
 我来答
有种孤独叫寂寞
2011-12-15 · TA获得超过1284个赞
知道答主
回答量:58
采纳率:0%
帮助的人:39.5万
展开全部
char p; p是字符型变量
char *p; *p是字符型变量,那么p呢?升级,p是指向*p的指针,这个不需多言
char **p; 根据上面递推,**p同理是字符弄变量(不理解的话假设**p为a,char a是什么?字符型变量啊),那么*p呢,升级(同上减*就升级),*p是指向字符型变量的指针,p呢,再升级,p是指向*p的指针,也就是说,char **p是指向字符变量指针的的指针。
追问
字符数组名name是指针的指针吗?
追答
你可以把name当成是一个指针的指针,但是name是一个常量,它的值不能改变。
任何数组的数组名存的都一个指向数组首地址的地址值,这个值不能被改变,而LZ代码中,name数组里存的都是指针,那么name可以当成是指针的指针,与普通指针的指针差别就在于值不可写。
haiyongsong
2011-12-15 · 超过17用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:51.5万
展开全部
是指向字符串指针的指针,在此例中 name是指向字符串数组中首元素的地址,也就是name是一个指针,而**p的作用是指向name这个地址的地址,也就是说,p里面存的元素是一个地址,这个地址是一个指向字符串的地址,所以p就是一个指向字符串地址的地址。
追问
name是指针的指针吗?
追答
name不是,你可以这样理解(char*)name[]={"Turbo C","Visual C++","Borland C++"};name是一个数组名字,而这个数组中的元素类型为(char*)也就是数组元素类型为字符串。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sickle15
2011-12-15 · TA获得超过109个赞
知道答主
回答量:219
采纳率:0%
帮助的人:145万
展开全部
p是int型指针变量,指向数组a的第一个元素,也2L能解释你的,3L解释我的可以。但是矛盾啊 关注此问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jwoodt
2011-12-15 · 超过16用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:33.4万
展开全部
二维指针,就是指向指针的指针。可以指向二维字符数组,也可以指向字符数组的指针。实际上字符数组名就是这个数组的头指针。这个你可以看下C语言的指针和数字部分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flowercutsjia
2011-12-15 · 超过15用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:34.3万
展开全部
char **是指向字符型指针的指针。跟 char * name[] 属于同类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-12-15
展开全部
char **p;是二级指针,它是指向指针的指针
name在这是指针数组,它的每个元素都是各个字符串的地址(即指针),想要指向各个指针,当然要设置p为二级指针才能指向它们。
追问
name是指针的指针吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式