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

时间:2017-04-08 03:17:31

标签: c++ arrays pointers

为什么指针在指向整数数组和字符数组时表现不同?

例如

int num[] = {1,2,3};
cout << num ;

这会打印出第一个元素的 ADDRESS

char list[] = { '1', '2', '3'};
cout << list ;

这会打印出整个数组元素的 VALUE

同样地

cout << (num+1) ;

打印出第二个元素的ADDRESS。而

cout << (list+1);

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

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

1 个答案:

答案 0 :(得分:4)

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

具体来说,运算符<<有一个non-member overload for const char *,它处理以null结尾的C字符串。这是应用于打印char数组的重载。请注意,您的字符数组以null结尾,因此打印它会产生未定义的行为。您可以通过向字符数组添加零来解决此问题:

char list[] = { '1', '2', '3', '\0'};

还有an overload that takes void *,适用于打印int指针。