📜  c++中的sizeof运算符(1)

📅  最后修改于: 2023-12-03 15:14:02.787000             🧑  作者: Mango

C++中的sizeof运算符

在C++中,sizeof是一个非常常用的关键字。它可以用来计算一个变量或者数据类型所占用的字节数。sizeof运算符是在编译时计算的(即在程序运行之前就已经计算出结果),因此不会对程序的性能造成太大的影响。

语法

sizeof运算符的语法如下:

sizeof (变量名/数据类型);
返回结果

sizeof运算符返回的结果是一个size_t类型的值,表示数据类型或者变量所占用的字节数。

示例
#include <iostream>
using namespace std;

int main()
{
    int a = 10;
    double b = 3.14;
    char c = 'A';

    cout << "int类型变量a占用的字节数为:" << sizeof(a) << endl;
    cout << "double类型变量b占用的字节数为:" << sizeof(b) << endl;
    cout << "char类型变量c占用的字节数为:" << sizeof(c) << endl;

    cout << "int类型占用的字节数为:" << sizeof(int) << endl;
    cout << "double类型占用的字节数为:" << sizeof(double) << endl;
    cout << "char类型占用的字节数为:" << sizeof(char) << endl;

    return 0;
}

输出结果为:

int类型变量a占用的字节数为:4
double类型变量b占用的字节数为:8
char类型变量c占用的字节数为:1
int类型占用的字节数为:4
double类型占用的字节数为:8
char类型占用的字节数为:1
可以使用在数据类型和变量上

sizeof运算符可以用来计算数据类型的字节数,同时也可以用来计算变量所占用的字节数。例如:

int a[10];
cout << "整型数组a所占用的字节数为:" << sizeof(a) << endl;

输出结果为:

整型数组a所占用的字节数为:40
不能用于动态分配内存的指针

sizeof运算符不能用于动态分配内存的指针。例如:

int* p = new int[10];
cout << "指向整型数组的指针p所占用的字节数为:" << sizeof(p) << endl;

输出结果为:

指向整型数组的指针p所占用的字节数为:8

这是因为在堆上分配内存时,变量的大小是不确定的,因此sizeof运算符无法准确计算所占用的字节数。如果想要获取堆上分配内存的大小,可以使用平台相关的接口,例如Windows平台下的_msize函数。