gpt4 book ai didi

c++ - 使用 char* 类型的 static_cast 获取地址,并获取 24 位和 48 位地址

转载 作者:行者123 更新时间:2023-11-28 01:43:14 24 4
gpt4 key购买 nike

#include<iostream>
using std::cout;
using std::endl;
int main()
{
char name[] = "abcde";
//char *name = "abcde";
cout << name<<"\n";
//type casting to get the address of char array
cout<<static_cast<void *>(name);
return 0;
}

NO error or warning
output: abcde
0x7fff1cea50c0
  • 但是当我使用 * 运算符而不是 [ ] 时,它仍然会给出输出但是 警告“不推荐从字符串常量'char *'转换”和 输出为 abcde 0x400964
  • 为什么 24 位和 48 位地址如此不同,为什么会出现警告?
  • 使用Codeblocks,操作系统:Ubuntu,64位系统

最佳答案

警告意味着你将一个常量字符串分配给一个可写指针,更详细地描述了它,例如,here

如果您不打算使用此指针进行编写,它是安全的并且可以抑制警告,但话又说回来,为什么不将其设置为 const 以避免搬起石头砸自己的脚呢?

至于地址,区别在于一个分配在stack上。 ,而其他在 read-only-data section 中哪个rather far从彼此

关于c++ - 使用 char* 类型的 static_cast 获取地址,并获取 24 位和 48 位地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46335834/

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