指针包含什么类型的数据

时间:2012-05-13 04:59:57

标签: c++ pointers memory memory-address

我写了以下代码

int num =   3;
int *ptr = #

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

得到以下输出。

3 0x7fff5fbff43c

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

  

0x7fff5fbff43c

是吗

一个。签名浮点数据

湾有符号整数数据

℃。无符号浮点数据

d。无符号整数数据

即签名字符数据

3 个答案:

答案 0 :(得分:6)

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

0x7fff5fbff43c只是指针的数字解释,是在base-16中打印出来的无符号整数。

答案 1 :(得分:3)

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

为了显示,ostream的<<将转换为字符串。该字符串不直接对应于类型; operator<<调用ostream函数来传递字符数据,可以是单独的字符,字节串或其组合。

答案 2 :(得分:-1)

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

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

相关问题