c++数组名 和 指针

charstr[]="helloworld";char*mStr=str;cout<<*&str<<endl;//输出helloworldcout<<*mStr<<end... char str[] = "hello world";
char *mStr = str;
cout << *&str << endl; //输出 hello world
cout << *mStr << endl;//输出 h 为什么不输出hello world???
char *mpStr = &str;//这里为什么会显示语法错误???
展开
 我来答
冒泡君
2019-04-04 · 知道合伙人软件行家
冒泡君
知道合伙人软件行家
采纳数:10 获赞数:23
五年软件开发经验,精通C/C++

向TA提问 私信TA
展开全部

1.str是数组,str相当于数组首地址。

2.mStr 指向 str,相当于指向了数组的第一个地址,*mStr 就输出h。

3.str只是相当于数组首地址,但是对数组名取地址,&str 得到的是一个指向整个地址的指针,类型是char(*)[12]. 所以第一行输出hello world。

4. 最后 你将char* 指向一个类型是char(*)[12] 类型 当然就不对了。会报语法错误,你可以这样写 char *mpStr = (char*) &str; 强制转换

你可以参考图片理解一下,望采纳!

itunes0004
2019-04-04 · TA获得超过4045个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:528万
展开全部
// 字符指针
cout << char_pointer; // will output the string from the address
// *字符指针 ===> 字符
cout << *char_pointer; // will output the char at the address

我们来看看

char str[] = "hello world";  // str is a (字符数组)字符指针, 具体点是 A12_c, 12个字符数组,char[12]
char *mStr = str;  // 定义新 字符指针 mStr, 指向 str
// 这句话类似于  cout << str << endl; 输出字符串
cout << *&str << endl; //输出 hello 
// 输出字符
worldcout << *mStr << endl;//输出 h 为什么不输出hello world???
// str 是字符数组, &str 是字符数组地址(PA12_c),类型是 PA12_c
char *mpStr = &str;//这里为什么会显示语法错误???
char *mpStr = (char*)(&str); // 强制转换类型就没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fastfs
2019-04-03 · TA获得超过1423个赞
知道大有可为答主
回答量:2659
采纳率:62%
帮助的人:805万
展开全部
第一个*和&相抵消 等于没有 就是cout <<str
第二个相当于str[0]
第三个类型不同
&str这样返回的是char** 而mpStr是个char*类型
追问

我试了一下,&str返回的好像不是char**

追答
失误了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
成功只为你
2019-04-04 · 超过22用户采纳过TA的回答
知道答主
回答量:427
采纳率:57%
帮助的人:57.9万
展开全部
char数组的数组名类型为char*,输出
追答
char数组的数组名是char*类型的,储存着数组第一个元素(下标为零)的地址,所以令一个指针等于数组名,再对该指针解引用,输出的是数组的地址元素而不是整个数组
另外,数组是储存在一串(暂且这么说)地址中,比如char  a[5]={...},数组a的5个元素储存5个不同地址中,&a[n]+1=&a[n+1],
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-04-04
展开全部
char *mpStr = &str;//这里为什么会显示语法错误???
------------------------------
其实是可以的, &str是一个地址值, 是str字符串的首地址, 转换一下就行了
char *mpStr=(char*)&str;
printf("%s",mpStr);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式