繁体   English   中英

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

[英]Pointers and Arrays [ pointers to int vs pointers to char]

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

例如

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

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

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

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

同样地

cout << (num+1) ;

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

cout << (list+1);

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM