gpt4 book ai didi

c++ - 为什么此 C++ 代码不返回数组中每个字符的地址?

转载 作者:太空狗 更新时间:2023-10-29 19:56:08 24 4
gpt4 key购买 nike

我正在尝试获取数组中每个字符的地址,如下所示:

#include <bits/stdc++.h>
using namespace std;

int main() {
char arr[] = {'a', 'b', 'c'};

cout<<&arr[0]<<endl;
cout<<&arr[1]<<endl;
cout<<&arr[2]<<endl;

return 0;
}

但我得到的输出如下:

abc0╒@
bc0╒@
c0╒@
Press any key to continue . . .

输出看起来不像是十六进制数字的地址,而只是一些随机字符。我在这里遗漏了一些概念吗?我想获取数组arr中每个字符的地址。

最佳答案

&arr[i] 的类型是 char* .

其中的类cout是一个实例重载了 << const char* 的运算符.它将指针视为以 NUL 结尾的字符串的开头,并将数据作为文本输出。

由于未达到 NUL 终止符,您正在观察未定义行为的影响。如果你写了

char arr[] = {'a', 'b', 'c', 0};

然后程序行为将被定义。

如果你想输出地址那么使用cout << (const void*)&arr[0] << endl; &c.

关于c++ - 为什么此 C++ 代码不返回数组中每个字符的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54980995/

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