首页 新闻 会员 周边 捐助

c++的数组指针为什么输出结果不一样?

0
[待解决问题]

char *str[] = { "hello" };
char *p;
p = str[0];
cout << *p << ":" << str[0];
//为什么*p输出是h,str[0]输出是hello
//str[0]应该是首地址才对啊

深蓝色梦想的主页 深蓝色梦想 | 初学一级 | 园豆:6
提问于:2015-12-18 00:17
< >
分享
所有回答(4)
0
char *str[] = { "hello" };
char *p;
p = str[0];
cout << *p << ":" << str[0];
//为什么*p输出是h,str[0]输出是hello
//str[0]应该是首地址才对啊

cout << p << ":" << str[0];//这样输出就可以了。

把p的*去掉,才是字符串的指针。*p是地址里面的内容。

[0] | 园豆:1257 (小虾三级) | 2015-12-18 08:57
0

char *str[]是一个二维数据,str[0][0]才表示首地址

silianpan | 园豆:571 (小虾三级) | 2015-12-18 12:48
0

p是一个指向字符的指针,所有*p只返回一个字符。

 

str是一个字符串,也就是一个字符的数组,str[0]会从第0个位置开始到结束符为止。(到哪里结束好像是有一个\0标志的)

hurner | 园豆:14 (初学一级) | 2015-12-18 16:09
0

str[0] 与str 是一样的,是首地址,即这个数组第一个字符的位置。

p=str[0]; 所以p也是首地址。

使用cout输出时,如果传的是指针,则打出指针对应的值。如果是值,则打出值。

*p 表示首地址上的那个值,也就是hello中的h

str 是首地址,即指针,所以要打出指针指向的整个值。即打出hello

乐享程序员 | 园豆:930 (小虾三级) | 2015-12-25 13:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册