代码:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
char testChar[] = {'a','b','c'};
char *testPointer = testChar ;
cout << testPointer << endl;
return 0;
}
问题:
当我使用cout << mypointer
时,
评论:
输出:
abc 310 367 277_ 377
Program ended with exit code: 0
答案 0 :(得分:4)
当打印出一个字符串(或你的情况下为char数组)时,它必须以空字符\0
终止,否则cout
将继续打印出位于内存中的字符超过预期的字符串直到它遇到一个空字符,或者它访问内存时,不允许从中读取导致分段错误。
那&#34;混乱&#34;在正在打印的末尾是位于char数组之后的内存位置中的值。
答案 1 :(得分:0)
同样在初始化char testChar[] = "abc";
之后,你实际上不需要'char * testPointer = testChar'语句,因为testChar本身就是数组第一个元素的地址。所以cout << testChar << endl;
会这样做。