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