新人求帮助!!

baidu_36239946 2016-09-25 11:06:20
第一次发帖我也就不废话了 直接贴代码和问题了!


vector<char *> ch1 = {"a","an","the"};
for(auto s: ch1)
cout << s << endl;

char *p = "an";
cout << *p << endl;

为什么这里 vector中的元素是 char * 然而我循环解引用却却可以的到整个字符串 即:

a
an
the
求助 char *解引用不应该是 一个字符吗
!!


顺便问一下 c++网络编程 需不需要 学习qt(本人是自学)
...全文
207 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-09-26
  • 打赏
  • 举报
回复
你这个压根不算循环解引用。
你只是对这个vector进行了遍历循环而已,当然可以输出字符串了。
 for(auto s: ch1)
cout << *s << endl; //价格*才是你要表达的意思吧?
paschen 版主 2016-09-26
  • 打赏
  • 举报
回复
遍历的是vector中每一个char*,所以s的类型是 char*,你循环的意思是s依次取vector中的每个元素,而你元素的类型是char*
imkelt 2016-09-26
  • 打赏
  • 举报
回复
引用 3 楼 imkelt 的回复:
[quote=引用 楼主 baidu_36239946 的回复:] 第一次发帖我也就不废话了 直接贴代码和问题了! vector<char *> ch1 = {"a","an","the"}; for(auto s: ch1) cout << s << endl; char *p = "an"; cout << *p << endl; 为什么这里 vector中的元素是 char * 然而我循环解引用却却可以的到整个字符串 即: a an the 求助 char *解引用不应该是 一个字符吗 !! 顺便问一下 c++网络编程 需不需要 学习qt(本人是自学)
char*会被解释成string首地址,会打印字符直到遇到空字符‘\0’; 比如char *p = "ssss"; cout << p; 结果会输出ssss即整个字符串。[/quote] ssss后面有一个空字符
imkelt 2016-09-26
  • 打赏
  • 举报
回复
引用 楼主 baidu_36239946 的回复:
第一次发帖我也就不废话了 直接贴代码和问题了! vector<char *> ch1 = {"a","an","the"}; for(auto s: ch1) cout << s << endl; char *p = "an"; cout << *p << endl; 为什么这里 vector中的元素是 char * 然而我循环解引用却却可以的到整个字符串 即: a an the 求助 char *解引用不应该是 一个字符吗 !! 顺便问一下 c++网络编程 需不需要 学习qt(本人是自学)
char*会被解释成string首地址,会打印字符直到遇到空字符‘\0’; 比如char *p = "ssss"; cout << p; 结果会输出ssss即整个字符串。
zycxnanwang 2016-09-26
  • 打赏
  • 举报
回复
还有就是建议视频只是入门,学深入还有看几本好书!
zycxnanwang 2016-09-26
  • 打赏
  • 举报
回复
字符指针可以代表字符串首地址,向cout传入字符串首地址,会打印整个字符串
YUSHUIHE 2016-09-26
  • 打赏
  • 举报
回复
同意3楼的观点。

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧