回答思路
标准回答
1. 各数据类型 sizeof 的结果其实就是该数据类型的字节数,不同类型的数据 sizeof 的结果是不一样的,并且不同的操作系统和编译器下同一数据类型的 sizeof 的结果也不一样,具体看编译器是如何实现的。以下是Microsoft C++ 中对常见内置类型 sizeof 的代码: #include <iostream> using namespace std; int mn() { cout << sizeof(bool) << endl; cout << sizeof(char) << endl; cout << sizeof(short) << endl; cout << sizeof(int) << endl; cout << sizeof(long) << endl; cout << sizeof(long long) << endl; return 0; } 运行结果: 1 1 2 4 4 8 2. 对指针变量进行 sizeof 运算,获得的是指针变量的大小,而无论是什么类型的指针,在同一平台下结果都是一样的。在 32 位平台下是 4 个字节,在 64 位平台下是 8 个字节。
3. sizeof 的原理:sizeof 是在编译的时候,查找符号表,判断类型,然后根据基础类型来取值。如果 sizeof 运算符的参数是一个不定长数组,则该需要在运行时计算数组长度。</iostream>