dreamyt 2019-11-11 14:41 采纳率: 100%
浏览 265
已采纳

字符数组输出的问题。。。。

图片说明

ptr=numbers应该是ptr指向numbers[0]的地址,cout<<ptr,应该会输出number[0]的地址吧,但是如图,为何把整个number字符数组的内容"www.tutorial.com"给输出了。而且当改为cout<<*ptr后,输出内容就会变为只有一个‘w’,这究竟是为啥,求大佬解答。

图片说明

而且如果是int数组,就不会有这种情况

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-11-11 17:30
    关注
    这是因为std::cout的<<运算符有多个重载的形式:
    对于char,它的实现是,输出单个的字符
    对于char*,它的实现是,当作字符串,一直往下输出,直到遇到\0
    
    所以 cout << ptr是第二个情况,cout << *ptr是第一个情况。
    
    好比你写了两个函数
    void prn(char ch) { printf("%c", ch); }
    void prn(char* ch) { while (*ch) { printf("%c", *ch); ch++; } }
    那么为什么
    char ch[10] = "hello";
    prn(*ch);
    prn(ch);
    一个输出h一个输出hello。因为两个函数内部实现不同。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测