gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:08:04 25 4
gpt4 key购买 nike

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

例如

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

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

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

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

同样

cout << (num+1) ;

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

cout << (list+1);

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

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

最佳答案

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

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

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

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

关于c++ - 指针和数组 [指向 int 的指针与指向 char 的指针],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43289772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com