32位编译器:32位系统下指针占用4字节
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:64位系统下指针占用8字节
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
以32位为例,另外需要注意的是string字符串的大小是28,这是因为string是一个类 它的大小和它包含的成员有关。
int main()
{
cout << sizeof(char) << endl ;
cout << sizeof(char*)<< endl;
cout << sizeof(int) << endl;
cout << sizeof(int*) << endl;
cout << sizeof(short) << endl;
cout << sizeof(short*) << endl;
cout << sizeof(long) << endl;
cout << sizeof(long*) << endl;
cout << sizeof(double) << endl;
cout << sizeof(double*) << endl;
cout << sizeof(float) << endl;
cout << sizeof(float*) << endl;
}
输出
1
4
4
4
2
4
4
4
8
4
4
4