32位地址位置混淆...(C编程)

use*_*466 0 c pointers memory-address

在C中,我们可以在变量前放置"&"来计算出该变量的地址.我有一台32位机器.每当我在控制台中打印地址时,控制台都会显示一个7位数的基数10.我只是想知道这个数字(10 ^ 7)与32位机器有什么关系.(2 ^ 32)谢谢

pax*_*blo 13

您可能应该将其打印为指针或十六进制值:

printf ("address = %p\n", &variable);
printf ("address = %x\n", &variable);
Run Code Online (Sandbox Code Playgroud)

这将为您提供最多8位的十六进制数(对于您的32位地址空间).

一个32位数字的范围从0000000016FFFFFFFF16(0通过4,294,967,295在十进制),所以它可以是最多10个十进制数字.

你只得到一个7位数的基数为10的原因是因为你的变量远不是地址空间的顶部.