我写了以下代码
int num = 3;
int *ptr = #
cout << *ptr << " " << ptr << endl;
得到以下输出。
3 0x7fff5fbff43c
我想知道这是什么类型的数据。
0x7fff5fbff43c
是吗
一个。签名浮点数据
湾有符号整数数据
℃。无符号浮点数据
d。无符号整数数据
即签名字符数据
答案 0 :(得分:6)
这些都不是 - 它是一个指向整数的指针,这个野兽与其描述中包含“data”一词的任何类型都不同。
0x7fff5fbff43c
只是指针的数字解释,是在base-16中打印出来的无符号整数。
答案 1 :(得分:3)
数据类型为int *
。这不是你提到的任何事情。你也许可以将它投射到其中一个;但是,您是否可以这样做是未定义的,并且可能因平台和编译器而异。
为了显示,ostream的<<
将转换为字符串。该字符串不直接对应于类型; operator<<
调用ostream
函数来传递字符数据,可以是单独的字符,字节串或其组合。
答案 2 :(得分:-1)
它表示内存地址,而不是变量。所以它是无类型的。但是你可以给它一个“间接类型”,这意味着这个指针指向的内存确实有一个类型(所以你可以有指向int,chars,结构等的指针......)。
阅读indirection,这是一个有趣的概念。