在C++中打印指向不同基元数据类型的指针的内存地址
Printing memory address of pointers to different primitive data types in C++
在C++中,有人能澄清吗
1-在下面的代码中,打印char*
显示为一堆随机字符,但打印string*
只是一个整数地址?为什么会这样?
int * intptr;
char * charptr;
std::string * stringptr;
float * floatptr;
//printing
std::cout << intptr << " , " << charptr << " , " << stringptr << " , " << floatptr << "n";
输出:
0x7ffeea2f1a60 , ���� , 0x7ffeea2f1a48 , 0x1092d13d4
2-charptr
是一个指针变量,用于绘制包含字符的内存部分。出于好奇,你是如何打印charptr
的地址的?
3-在阅读不同的资料时,我发现:;不同的打印是因为函数(i.e. a const char *)
将该存储器视为字符序列";。有人能把这个答案扩展到上面的代码中吗?
char*
在打印方面是特殊的。原因是C的历史遗留问题,其中字符串表示为字符数组。因此,在给定char*
的大多数时间里,你想做的是打印它指向的字符。
我不认为你的意思是打印charptr
的地址(那只是cout << &charptr
(,我认为你的目的是打印地址,这是charptr
的值。这样做的方法是在打印地址之前将地址强制转换为void*
cout << static_cast<void*>(charptr);
你的第三个问题基本上就是我在上面第一段中所解释的。
相关文章:
- 在C++中打印指向不同基元数据类型的指针的内存地址
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 尝试了解C++指针和数据类型初始化
- 指针数据类型变量如何包含对象?
- 类数据成员指针的非类型模板参数包无法使用 gcc 编译
- 指向数据类型的指针的类模板推导
- 如何在C 中使用不同数据类型的类模板指针声明指针
- 具有不同数据类型或参数的不同函数的函数指针
- 以其数据类型作为参数以指针
- 将原始数据类型转换为空隙指针类型
- C++指针给出数据类型为"int"的错误,但与"char"一起工作正常
- 如何正确地对数据开始指针进行类型转换(这是一种很好的做法吗)
- 具有指针数据类型的非类型函数模板参数
- C++指向函数作为参数的指针.数据类型不兼容
- 指向指针的指针(C/C++)中的数据类型声明意义
- 将数组变量分配给 C++ 中相同数据类型的指针
- 为什么我们需要不同的数据类型来表示指针
- 为什么指针声明中需要数据类型
- 数据类型指针使用*(Datatype *)
- C /c++数据类型,通过指针实现最快的可移植访问