gpt4 book ai didi

c++ - 为什么C++中字符数组和整型数组的基本属性有区别?

转载 作者:行者123 更新时间:2023-12-02 01:17:08 24 4
gpt4 key购买 nike

如果我执行这段代码:

#include<iostream>
using namespace std;

int main(){
char str[20] = {'a','b','c','d','e'};
cout<<str<<endl;
return 0;
}

它输出 abcde 但如果我执行此代码:

#include<iostream>
using namespace std;

int main(){
int arr[20] = {1,2,3,4,5};
cout<<arr<<endl;
return 0;
}

它输出0x7fff22eecc30 我尝试在两个不同的在线编译器中执行此代码,它们给出相同的输出。

char array中它返回数组内容,但在int array中它返回内存地址。这是为什么?另外,两个不同的在线编译器如何返回相同的内存地址?

我尝试过在网上查找此内容,但我不确定要查找什么?

最佳答案

char str[20] = {'a','b','c','d','e'}; ,数组剩余15个元素全部设置为0。特殊的ostream << 过载用作数组 str 的结果腐烂char*指向该数组第一个元素的指针将输出该数组,就好像它是 C 样式字符串一样,因为第一个 0 将充当 NUL 终止符。

上面的等效写法是 char str[20] = "abcde" .

在第二种情况下,重载的 <<对于 ostream对于const void*使用指针(再次由于指针衰减),它打印数组第一个元素的地址。

关于c++ - 为什么C++中字符数组和整型数组的基本属性有区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61385741/

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