如何获取字符的地址&?
How can I get the address of a char&?
这段代码编译了,但没有生成我期望的结果:
#include <iostream>
int main()
{
char h = 'h';
char& href = h;
std::cout << &href << std::endl;
int x = 1;
int& xref = x;
std::cout << &xref << std::endl;
}
结果类似于:
h
0x22fe38
如何检索char
的地址,我的char&
是混叠的?
直接转换为void*
:
std::cout << (void*)&href << std::endl;
您正在打印原始字符,因为std::ostream
's有一个类似于以下的函数:
std::ostream& operator<<(std::ostream& os, char const* val);
当你要求一个字符的地址时,你得到一个char*
;与任何其他类型一样,addressof &
操作符返回指向该类型的指针。由于char*
转换为char const*
,因此调用前面提到的函数,就好像它是一个以空结束的字符串。
如何获取char的地址呢?混叠吗?
表达式为&href
。
您看到的问题是由于&href
的类型是char*
。因此,
std::cout << &href << std::endl
尝试打印以空结尾的字符串。你可以使用
std::cout << (void*)&href << std::endl
打印地址
相关文章:
- 如何获取C++字符数据类型的地址
- 打印字符数组地址的正确方法
- 为什么我无法获取 MSVS2019 / C++ 中字符或uint8_t变量的内存地址?
- 使用 C++将 IP 地址附加到字符*
- C++指针分配字符数组的地址
- 为什么 C++ 中的字符数组返回其项目而不是地址?
- 字符数组地址和整数数组地址
- 在带有 (void*) 强制转换的字符串中打印字符的内存地址
- 为什么这段代码给出错误......'a'是指针到字符指针,应该存储's'的地址,因为s是指向数组的第一个元素的指针
- 如何在 2D 字符数组中打印 [x][y] 元素的地址?(C++)
- 读取字符 * 始终具有相同的地址
- C++ 在 64 位平台中传递字符数组地址
- 获取字符数组地址,然后转换为指针字符
- 如何反转字符指针数组的地址
- 如何使用字符指针查找字符串的地址
- 指向字符地址的指针的值
- 将文件的常量字符* 地址传递给 ifstream 对象的问题
- 为什么十六进制地址是14个字符
- c++seekg似乎返回了一个十六进制地址,而不是.txt文件中的实际字符
- 字符类型变量的地址