鱼C论坛

 找回密码
 立即注册
查看: 1920|回复: 3

[已解决]c++里指针的问题

[复制链接]
发表于 2018-2-28 10:54:15 | 显示全部楼层 |阅读模式
1鱼币
小甲鱼老师有一段C++的视频,代码如下:
  1. #include <iostream>

  2. int main()
  3. {
  4.         const unsigned short ITEMS = 5;
  5.        
  6.         int intArray[ITEMS] = {1, 2, 3, 4, 5};
  7.         char charArray[ITEMS] = {'F', 'i', 's', 'h', 'C'};
  8.        
  9.         int *intPtr = intArray;
  10.         char *charPtr = charArray;
  11.        
  12.         std::cout << "整型数组输出: " << '\n';
  13.         for( int i=0; i < ITEMS; i++ )
  14.         {
  15.                 std::cout << *intPtr << " at " << intPtr << '\n';
  16.                 intPtr++;
  17.         }
  18.        
  19.         std::cout << "字符型数组输出: " << '\n';
  20.         for( int i=0; i < ITEMS; i++ )
  21.         {
  22.                 std::cout << *charPtr << " at " << charPtr << '\n';
  23.                 charPtr++;
  24.         }
  25.         return 0;
  26. }
复制代码

QQ截图20180228104226.png
这里我有些晕了。charptr是指向字符数组的指针啊?这个指针指向的是字符数组的首地址,即charArray[0]的地址。那std::cout << *charPtr << " at " << charPtr << '\n';这个语句打出来的应该是charArray[0]的地址啊?为什么打出来的是FishC,变成整个数组了呢?  为什么上面整型数组打印的就不是整个数组12345,而是首地址呢?

最佳答案
2018-2-28 10:54:16
因为字符串数组比较特殊,想想你要输出一个字符串,是不是可以直接这样
s = "good day"
cout<<s<<endl;

这里s其实也是字符串数组的地址,但是你用cout进行输出的时候,会自动输出里面的字符,直到遇到'\0'

最佳答案

查看完整内容

因为字符串数组比较特殊,想想你要输出一个字符串,是不是可以直接这样 s = "good day" cout
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-28 10:54:16 | 显示全部楼层    本楼为最佳答案   
因为字符串数组比较特殊,想想你要输出一个字符串,是不是可以直接这样
s = "good day"
cout<<s<<endl;

这里s其实也是字符串数组的地址,但是你用cout进行输出的时候,会自动输出里面的字符,直到遇到'\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-28 13:27:24 | 显示全部楼层
这是因为cout比printf相对更智能~或者说这是一个重载的体现~他不会要求你怎么去格式化输出这个值,他可以自己去选择~
如果你要输出地址~那你大可以搞个强转~ 转成void指针~不就是地址了~

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
fairylee83 + 1 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-28 14:07:23 | 显示全部楼层
风过无痕丶 发表于 2018-2-28 13:27
这是因为cout比printf相对更智能~或者说这是一个重载的体现~他不会要求你怎么去格式化输出这个值,他可以 ...

非常感谢您的答复,我又复习了c的printf,您的答案让我更深入的了解了cout,怪不得小甲鱼用reinterpret_cast来强转。抱歉不能评两个最佳,您回复的也切中我不会的点,我给您评满分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 06:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表