【发布时间】:2015-04-08 16:31:24
【问题描述】:
也许是个愚蠢的问题。当我cout指向char数组的指针时,我以为它会打印一个地址;相反,它取消引用地址并将实际值打印到 null。
与 int 数组相反,它可以按照我的预期执行。它打印第一个元素的地址。
为什么打印指针时 char 元素会被取消引用。
char* as = new char[100];
as[0] = 'a';
as[1] = 'b';
as[2] = NULL;
cout << as << endl;
int* s = new int[100];
s[0] = 2;
cout << s << endl;
问这个是因为当我尝试获取第一个 char 元素 a[0] = 'a'; 的地址时。我必须将它存储在指向指针的指针中。这对我来说似乎很奇怪,但这不是重点。
char ** d = &as;
cout << d << "this is d" << endl;
【问题讨论】:
-
char 数组 = C 风格的字符串。系统假设(在这种情况下不正确)您要打印字符串本身,而不是字符串的地址。
-
@MarcB:在 cmets 中回答 Argh -.-
-
@LightningRacisinObrit 哦,对不起,我认为问题是为什么
cout << d打印一个字符串......我想知道这是怎么回事。