【发布时间】:2016-10-11 13:54:39
【问题描述】:
按照书籍,第一行 cout 应该打印我存储 char 变量 b 的位置的地址,这似乎是 int 变量 a 也是。但是第一个 cout 语句打印出一个奇怪的 'dh^#' 而第二个语句正确打印一个十六进制值 ' ox23fd68'。为什么会这样?
#include<iostream>
using namespace std;
int main()
{
char b='d';
int a=10;
char *c=new char[10];
c=&b;
int *e=&a;
cout<<"c: "<<c<<endl;
cout<<"e: "<<e;
}
【问题讨论】:
-
提示:“按书籍”应该
"c: "也打印地址吗? -
这不是一个坏问题,但可能在别处得到了回答。简短的回答是,C++ 继承了 C 对
char *的处理方式,即“可能是可打印事物的集合”。 -
你是从什么书里得到这个想法的?
-
如果这是你的书教给你的,请把它扔掉,试试The Book List
-
我更倾向于认为 OP 是按照书本行事,然后推断他们所学到的知识,却发现
char*的处理方式与所有其他指针类型不同。对于那些在他们(开发人员)的一生中都见过 C 风格字符串的人来说,这可能很常见,这可以说是令人惊讶。
标签: c++