Pon*_*ont 2 c c++ arrays pointers
我试图理解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";
Run Code Online (Sandbox Code Playgroud)
这是找到第一个元素的地址的错误方法Carray吗?或者这是如何cout解释整数和字符数组的指针的一些怪癖.
输出:
Ox23fe30
pk
Run Code Online (Sandbox Code Playgroud)
如何cout解释字符数组的指针是一个怪癖.
当给定指针时,cout将打印地址,除非它是a char*,在这种情况下,它将指针解释为c样式字符串(指向结束的字符数组的指针将为空字节).
要打印char数组的地址,请将其强制转换为void*第一个:cout << reinterpret_cast<void*>(c) << "\n";
有c,你在打电话operator<<(std::istream&, char*).这只是打印字符直到它命中'\0',就像一个普通的旧C风格的字符串.
用a,operator<<(std::istream&, int*)打印地址.
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |