一个小问题,求大神帮忙解决

子夜一段星 2012-05-22 09:06:28
一个很简单的定义函数。
void mufun(char *ch)
{
cout<<ch<<endl;
}
刚刚在一本书上看到的。书上说,此是将用户输入的参数直接输出到屏幕。请问,定义了指针变量*ch那么ch应该就是指向*ch的指针,应该就是*ch内容的实际地址。那么输出ch是不是就是输出的地址,而不是*ch里面的内容?怀疑书中的是错的。谢谢各位大神,本人刚接触c++,很多都不懂
...全文
151 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnzmdzcm 2012-05-28
  • 打赏
  • 举报
回复
这个问题只有字符数组才可以使用,其他类型的数组一律不行这是C++为了兼容c对字符数组的特殊处理,当直接对字符数组的首地址输出的时候会一直输出这个地址后面的所有字符直到遇到'\0'为止,当输入的时候会直接在这个地址插入字符最后补上'\0'
Peng4Wang1 2012-05-27
  • 打赏
  • 举报
回复
char* ch是字符串的首字母地址
xiaokalearning 2012-05-27
  • 打赏
  • 举报
回复
char* ch是字符串的首字母地址,输出ch的时候会一直输出下去直到停止符\0
paschen 版主 2012-05-23
  • 打赏
  • 举报
回复
字符串指针有时可以按不同于一般指针变量的方式操作,即有时它可以表示字符串整体。
也就是ch还代表了一整个字符串,输出时一直会到遇到'\0'才停止。

这个规定相当有用的,假如没这个规定,你要输出一个字符串,只能用循环一个字符一个字符的输出,你可以想像有多麻烦。不过只有char*有这个规定,其他类型的是没有的哦,建议你上机调试下就知了。
pathuang68 2012-05-23
  • 打赏
  • 举报
回复
书没有错,慢慢习惯就好了。

如果cout<<ch<<endl;楼主觉得不爽,难道想用cout<<*ch<<endl;?但*ch是第一个字符哦。
cbzjzsb123 2012-05-23
  • 打赏
  • 举报
回复
字符串指针有时可以按不同于一般指针变量的方式操作,即有时它可以表示字符串整体。
也就是ch还代表了一整个字符串,输出时一直会到遇到'\0'才停止。

这个规定相当有用的,假如没这个规定,你要输出一个字符串,只能用循环一个字符一个字符的输出,你可以想像有多麻烦。不过只有char*有这个规定,其他类型的是没有的哦,建议你上机调试下就知了。
dongfei00 2012-05-23
  • 打赏
  • 举报
回复
ch表示的字符串的首地址,编译器会主动向下输出至结束。楼主可以写个简单的 调试一下。你可以输出ch和*ch比较一下,这样会更明白一点。
qq120848369 2012-05-23
  • 打赏
  • 举报
回复
这是全局的运算符重载:

operator << (ostream &, ...)
youkuxiaobin 2012-05-22
  • 打赏
  • 举报
回复
不是,他会把ch所指向的字符串全部输出
liuxingyu2008pp 2012-05-22
  • 打赏
  • 举报
回复
用代码试下不就知道了么,输出的是ch指针所指向的内容
wmczx1314 2012-05-22
  • 打赏
  • 举报
回复
ch是一个字符串指针,,ch指向了字符串的首地址,编译器会自动的一直往下查找,知道找到'\0' 才会结束。所以输出的是内容。
laurent1987 2012-05-22
  • 打赏
  • 举报
回复
操作符重载

64,654

社区成员

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

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