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 位以外的其他内容组成。
我需要打印一个指针的地址。 这是我的代码:
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 位以外的其他内容组成。