0

我写了以下代码

int num =   3;
int *ptr = #

cout << *ptr << " " << ptr << endl;

并得到以下输出。

3 0x7fff5fbff43c

我想知道这是什么类型的数据。

0x7fff5fbff43c

是吗

一个。有符号浮点数据

湾。有符号整数数据

C。无符号浮点数据

d。无符号整数数据

e. 签名字符数据

4

3 回答 3

6

这些都不是——它是一个指向整数的指针,它是一种不同于在其描述中包含“数据”一词的任何类型的野兽。

0x7fff5fbff43c仅仅是一个指针的数字解释,它是一个以 base-16 打印的无符号整数。

于 2012-05-13T05:01:50.530 回答
3

数据类型为int *。这不是你提到的任何事情。您也许可以将其转换为其中之一;但是,您是否可以这样做是未定义的,并且可能因平台和编译器而异。

为了显示,ostream<<将转换为字符串。这个字符串不直接对应一个类型;operator<<调用ostream函数以将字符数据作为单独的字符、字节串或它们的组合传递。

于 2012-05-13T05:02:57.067 回答
-1

它代表一个内存地址,而不是一个变量。所以它是无类型的。但是你可以给它一个“间接类型”,这意味着这个指针指向的内存确实有一个类型(所以你可以有指向 int、chars、结构等的指针)。

阅读间接,这是一个有趣的概念。

于 2012-05-13T05:06:10.743 回答