[英]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.