【问题标题】:Printing memory address of pointers to different primitive data types in C++ [duplicate]在C ++中打印指向不同原始数据类型的指针的内存地址[重复]
【发布时间】:2020-07-13 11:44:14
【问题描述】:

有人可以在 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 *) 函数将内存视为字符序列”。有人可以用上面的代码扩展这个答案吗?

【问题讨论】:

    标签: c++ pointers char memory-address


    【解决方案1】:

    char* 在打印方面是特殊的。原因是 C 的历史遗留问题,其中字符串表示为字符数组。所以大多数时候给定一个char*,你想做的就是打印它指向的字符。

    我不认为你的意思是打印charptr 的地址(那只是cout &lt;&lt; &amp;charptr),我认为你的意思是打印地址是charptr 的值。这样做的方法是在打印之前将地址转换为void*

    cout << static_cast<void*>(charptr);
    

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

    【讨论】:

    • 为什么这被否决了?
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2020-06-07
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多