基本类型的字节数:
C标准中没有规定,哪个基本类型应该是多少字节数。这个与机器、OS、编译器有关。
比如,在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而在tuborC下则是2个字节。
int,long 的宽度都可能随编译器而变。
但有几条铁定的原则(ANSI/ISO制订的):
-
sizeof(short int)<=sizeof(int)
-
sizeof(int)<=sizeof(long int)
-
int至少应为16位(2字节)
-
long至少应为32位(4字节)
char | char* | short | int | float | double | long | long long | |
16位编译器 | 1 | 2 | 2 | 2 | 4 | 8 | 4 | 8 |
32位编译器 | 1 | 4 | 2 | 4 | 4 | 8 | 4 | 8 |
64位编译器 | 1 | 8 | 2 | 4 | 4 | 8 | 8 | 8 |
指针的占用的字节数:
指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。
16位系统,指针为2个字节,32位系统,指针为4个字节,64位系统,指针为8个字节。