C %p 打印 16 个字节而不是 8 个字节

lyh*_*n01 4 c printf pointers

我需要打印一个指针的地址。这是我的代码?

float arr[5] = {1.2 , 2.3 , 5 , 7.1 , 9.6};
float *ptrarr;
ptrarr = &arr[0];

printf("Address of ptrarr+2=%p,%p \n\n",ptrarr+2,&arr[2]);
Run Code Online (Sandbox Code Playgroud)

我知道指针地址有 8 个字节,但我的输出总是 16 个字节。这是输出

Address od ptarr+2=000000000061FDE8,000000000061FDE8
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

goo*_*ion 8

在每字节位数为 8 的平台上:

1个十六进制字符代表4位,即“半字节”。

因此 16 个十六进制字符代表 8 个字节(不是 16 个字节)。


请注意,通常每个字节的位数由 定义CHAR_BIT

因此,从理论上讲,一个字节可以由 8 位以外的其他内容组成。