C++ C++;指针和数组基础知识
代码:C++ C++;指针和数组基础知识,c++,arrays,pointers,C++,Arrays,Pointers,代码: 打印字符串(或您的情况下的字符数组)时,它必须以空字符结尾\0,否则cout将继续打印出位于内存中超过预期字符串的字符,直到它遇到空字符,或者它访问不允许读取的内存,从而导致分段错误 正在打印的末尾的“混乱”是直接经过字符数组的内存位置中的值 打印字符串(或您的情况下的字符数组)时,必须以空字符结尾\0,否则cout将继续打印内存中超出预期字符串的字符,直到它遇到空字符,或者它访问不允许读取的内存,从而导致分段错误 正在打印的末尾的“混乱”是直接经过字符数组的内存位置中的值 也在初始化后
打印字符串(或您的情况下的字符数组)时,它必须以空字符结尾
\0
,否则cout
将继续打印出位于内存中超过预期字符串的字符,直到它遇到空字符,或者它访问不允许读取的内存,从而导致分段错误
正在打印的末尾的“混乱”是直接经过字符数组的内存位置中的值 打印字符串(或您的情况下的字符数组)时,必须以空字符结尾
\0
,否则cout
将继续打印内存中超出预期字符串的字符,直到它遇到空字符,或者它访问不允许读取的内存,从而导致分段错误
正在打印的末尾的“混乱”是直接经过字符数组的内存位置中的值 也在初始化后
char testChar[]=“abc”代码>实际上不需要'char*testPointer=testChar'语句,因为testChar本身就是数组第一个元素的地址。所以cout在初始化char testChar[]=“abc”之后也可以使用代码>实际上不需要'char*testPointer=testChar'语句,因为testChar本身就是数组第一个元素的地址。所以,不能完全。。如果使用printf==printf(“%s\n”,testPointer);==要打印字符串,您会看到完全相同的结果,这表明它与cout本身无关,而是与字符串的形成方式有关代码>。这将自动在字符串末尾添加空终止符。如果您检查的结果,则无法准确地。。如果使用printf==printf(“%s\n”,testPointer);==要打印字符串,您会看到完全相同的结果,这表明它与cout本身无关,而是与字符串的形成方式有关代码>。这将自动在字符串末尾添加空终止符。如果您检查cout的结果
#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;
}