【问题标题】:Printing C++ int pointer vs char pointer打印 C++ int 指针与 char 指针
【发布时间】:2015-11-17 13:00:33
【问题描述】:

当我运行以下代码时:

int i[] = {1,2,3};
int* pointer = i;
cout << i << endl;

char c[] = {'a','b','c','\0'};
char* ptr = c;
cout << ptr << endl;

我得到这个输出:

0x28ff1c
abc

为什么int指针返回的是地址,而char指针返回的是数组的实际内容?

【问题讨论】:

标签: c++ string pointers


【解决方案1】:

这是由于&lt;&lt; 运算符的过载。对于char *,它将其解释为以空字符结尾的 C 字符串。对于int 指针,您只需获取地址即可。

【讨论】:

    【解决方案2】:

    operator

    cout

    是重载 'char *' 所以它知道如何处理它(在这种情况下,打印所有字符直到最后一个)。

    但是对于 int 不是,所以它只是打印出'内存地址'

    【讨论】:

      【解决方案3】:

      指向char 的指针与字符串文字的类型相同。所以为了简单起见,cout 将打印 char 数组的内容,就好像它是一个字符串一样。所以当你这样做时:

      cout << "Some text" << endl;
      

      它不会打印地址,就像您的代码一样。

      如果您想发送地址,请将其转换为size_t

      cout << reinterpret_cast<size_t>(ptr) << endl;
      

      【讨论】:

        猜你喜欢
        • 2021-11-26
        • 1970-01-01
        • 1970-01-01
        • 2020-06-03
        • 2017-09-03
        • 2018-04-05
        • 2013-12-06
        • 1970-01-01
        • 2012-03-03
        相关资源
        最近更新 更多