关于c++中指针数组赋值时的迷惑

 我来答
门悠婉柏枝
2019-08-22 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:25%
帮助的人:698万
展开全部
先明白什么是指针数组,指针数组是指这个数组中的每个元素都是一个指针,指针就是地址,指针在使用的时候要有一个确切的指向才可以使用,否则结果是不可预料的。所以你把整型数给它当让是不可以的,改为:
int
a=0,b=1,c=2,d=3,e=4,f=5;
int
*P[6]={&a,&b,&c,&d,&e,&f};
就可以。
int
*P[6]={&a,&b,&c,&d,&e,&f};这一句使得数组中的各指针有了一个确切的指向。
int
*P[3];
int
x1,x2,x3;
cin>>x1>>x2>>x3;
P[0]=new
int(x1);
P[1]=new
int(x2);
P[2]=new
int(x3);
对于此指针数组中的元素
p[0]
p[1],p[2]动态分配内存,动态分贝内存就是使该指针有一个合法的地址,指针也就有了一个确切的指向。
char
*p[6]={"Orange","Pear","Banana","Peach","Apple","Guava"}
字符串有其特殊性,字符串末尾以‘\0’作为结束标志,存储时连续的,所以存储字符串不需要存储每一个字符的地址,只需要首字母的地址即可。
通过
cout<<**P1++<<"
";就可以看出此句只输出每个字符串的首个字母。
char
*p[6]={"Orange","Pear","Banana","Peach","Apple","Guava"}该句相当于如下:
char
*s1
=
"Orange";
char
*s2
=
"Pear";
char
*s3
=
"Banana";
char
*s4
=
"Peach";
char
*s5
=
"Apple";
char
*s6
=
"Guava";
char
*P[6]={s1,s2,s3,s4,s5,s6};
而s1,s2等就是字符串的首字符的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式