C/C++:如何获取一个地址所寻址的字节数

hl0*_*37_ 1 c c++ memory byte

在大多数x86/x86_64架构中,一个地址指向一个字节.但是在我使用的微控制器上,地址指向2个字节.

有没有办法知道地址指向的字节数?(比如在宏观或其他方面)

Bil*_*eal 7

"字节"表示机器上的"最小可寻址单元"; 一个地址始终标识一个字节.在某些机器上,一个字节为8位; 在其他人,它可能是32位.1

C标准定义char为机器2上的最小可寻址单元; 以及该CHAR_BIT单元中位数的宏.它将是<limits.h>/中的宏<climits>.


1 C99 6.2.6.1脚注40说:

一个字节包含CHAR_BIT位,类型的值unsigned char范围从02到CHAR_BIT -1.

2并非严格正确,但强烈暗示例如C99 6.2.6.1/4:

存储在任何其他对象类型的非位字段对象中的值由n× CHAR_BIT位组成,其中n是该类型的对象的大小(以字节为单位).

这说的 sizeof(char) == 1