在C++中打印指向不同基元数据类型的指针的内存地址

Printing memory address of pointers to different primitive data types in C++

本文关键字:数据类型 指针 地址 内存 C++ 打印      更新时间:2023-10-16

在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);

你的第三个问题基本上就是我在上面第一段中所解释的。