指针和数组[指向int的指针与指向char的指针]

Adi*_*tya 1 c++ arrays pointers

为什么指针指向整数数组和字符数组时行为会有所不同?

例如

int num[] = {1,2,3};
cout << num ;
Run Code Online (Sandbox Code Playgroud)

这将打印出第一个元素的地址

char list[] = { '1', '2', '3'};
cout << list ;
Run Code Online (Sandbox Code Playgroud)

这将打印出整个数组元素的

同样地

cout << (num+1) ;
Run Code Online (Sandbox Code Playgroud)

打印出第二个元素的地址。而

cout << (list+1);
Run Code Online (Sandbox Code Playgroud)

从第二个元素开始打印出整个数组的VALUE

据我了解,数组名称是指向数组第一个元素的指针。如果没有取消引用运算符(*),则指针应返回元素的地址。但是为什么char指针返回值呢?

das*_*ght 5

指针的行为没有不同:行为是C ++标准库处理指针输出的方式。

具体来说,operator <<有一个非成员重载const char *,用于处理以N结尾的C字符串。这是应用于打印char阵列的过载。请注意,您的字符数组不是以空字符结尾的,因此打印它会产生未定义的行为。您可以通过在字符数组中添加零来解决此问题:

char list[] = { '1', '2', '3', '\0'};
Run Code Online (Sandbox Code Playgroud)

还有一个take的重载void *,它适用于打印int指针。