【发布时间】:2014-07-16 16:23:05
【问题描述】:
我试图理解 C++ 中的指针和数组。我注意到在下面的代码中输出a 正确地给出了array 中第一个元素的地址,但是输出c 给出了pk 而不是地址。
int array[3]={4,7,2};
int * a;
a= array;
char Carray[3]={'p','k','\0'};
char * c;
c= Carray;
cout << a << "\n";
cout << c << "\n";
这是在Carray 中查找第一个元素的地址的错误方法吗?或者这是cout 解释整数和字符数组指针的一些怪癖。
输出:
Ox23fe30
pk
【问题讨论】:
-
请向我们展示您从这些语句中得到的输出。
-
C 风格的字符串是以空字符
\0结尾的char数组,cout假设您传递给它的是 C 风格的字符串。所以你获取第一个元素地址的方法是正确的,但是cout对该地址的解释对于int和char是不同的。 -
除非您特别要求与 C 或类似的东西进行比较,否则不要用 C 标记您的 C++ 问题 - 语言及其惯用答案可能会大不相同。