📜  C中的sizeof运算符

📅  最后修改于: 2021-05-25 20:01:43             🧑  作者: Mango

在C或C++中, Sizeof是一个非常常用的运算符。它是一个编译时一元运算运算符,可用于计算其操作数的大小。 sizeof的结果是无符号整数类型,通常用size_t表示。 sizeof可以应用于任何数据类型,包括基本类型(例如整数和浮点类型,指针类型)或复合数据类型(例如Structure,union等)。

用法
sizeof()运算符根据操作数类型以不同的方式使用。

1.当操作数是数据类型时。
sizeof()与int,float,char…等数据类型一起使用时,它仅返回分配给该数据类型的内存量。

让我们来看一个例子:

C
#include 
int main()
{
    printf("%lu\n", sizeof(char));
    printf("%lu\n", sizeof(int));
    printf("%lu\n", sizeof(float));
    printf("%lu", sizeof(double));
    return 0;
}


C++
#include 
using namespace std;
  
int main()
{
    cout << sizeof(char)<<"\n";
    cout << sizeof(int)<<"\n";
    cout << sizeof(float)<<"\n";
    cout << sizeof(double)<<"\n";
    return 0;
}


C
#include 
int main()
{
    int a = 0;
    double d = 10.21;
    printf("%lu", sizeof(a + d));
    return 0;
}


C++
#include 
using namespace std;
int main()
{
    int a = 0;
    double d = 10.21;
    cout << sizeof(a + d));
    return 0;
}


C
#include 
int main()
{
    int arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };
    printf("Number of elements:%lu ", sizeof(arr) / sizeof(arr[0]));
    return 0;
}


C++
#include 
using namespace std;
  
int main()
{
    int arr[] = { 1, 2, 3, 4, 7, 98, 
    0, 12, 35, 99, 14 };
    cout << "Number of elements: "
    <<(sizeof(arr) / sizeof(arr[0]));
    return 0;
}


输出:
1
4
4
8

注意:sizeof()可能会根据机器提供不同的输出,我们已经在32位gcc编译器上运行了程序。

2.当操作数是一个表达式时。
当将sizeof()与表达式一起使用时,它将返回表达式的大小。让我们看例子:

C

#include 
int main()
{
    int a = 0;
    double d = 10.21;
    printf("%lu", sizeof(a + d));
    return 0;
}

C++

#include 
using namespace std;
int main()
{
    int a = 0;
    double d = 10.21;
    cout << sizeof(a + d));
    return 0;
}
输出:
8

从int和double的第一种情况下我们知道,大小分别是4和8,a是int变量,而d是double变量。最终结果将是两倍。因此,我们程序的输出为8个字节。

需要尺寸
1.找出数组中元素的数量。
Sizeof可用于自动计算数组元素的数量。让我们看例子:

C

#include 
int main()
{
    int arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };
    printf("Number of elements:%lu ", sizeof(arr) / sizeof(arr[0]));
    return 0;
}

C++

#include 
using namespace std;
  
int main()
{
    int arr[] = { 1, 2, 3, 4, 7, 98, 
    0, 12, 35, 99, 14 };
    cout << "Number of elements: "
    <<(sizeof(arr) / sizeof(arr[0]));
    return 0;
}
输出:
Number of elements: 11

2.动态分配一块内存。
sizeof在动态内存分配中被大量使用。例如,如果我们要分配足以容纳10个整数的内存,而我们不知道该特定机器中的sizeof(int)。我们可以借助sizeof进行分配。

int* ptr = (int*)malloc(10 * sizeof(int));

参考
https://zh.wikipedia.org/wiki/Sizeof

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。