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

C %p printing 16 instead of 8 bytes

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

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]);

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

Address od ptarr+2=000000000061FDE8,000000000061FDE8

有人可以解释一下吗?

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

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

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


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

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