Cprogramming 简明教程
C - The sizeof Operator
sizeof operator 是编译时 unary operator 。它用于计算其操作数的大小,该操作数可以是数据类型或变量。它以字节数返回大小。
它可以应用于任何数据类型、浮点类型或指针类型变量。
sizeof(type or var);
当 sizeof() 与数据类型一起使用时,它只是返回分配给该数据类型的内存量。输出在不同的机器上可能有所不同,例如,32 位系统可以显示与 64 位系统不同的输出。
Example 1: Using the sizeof Operator in C
我们来看看下面的例子。它强调了如何在 C 程序中使用 sizeof 运算符 −
#include <stdio.h>
int main(){
int a = 16;
printf("Size of variable a: %d \n",sizeof(a));
printf("Size of int data type: %d \n",sizeof(int));
printf("Size of char data type: %d \n",sizeof(char));
printf("Size of float data type: %d \n",sizeof(float));
printf("Size of double data type: %d \n",sizeof(double));
return 0;
}
Example 2: Using sizeof with Struct
在这个例子中,我们声明了一个类型 struct 并查找了结构类型变量的大小。
#include <stdio.h>
struct employee {
char name[10];
int age;
double percent;
};
int main(){
struct employee e1 = {"Raghav", 25, 78.90};
printf("Size of employee variable: %d\n",sizeof(e1));
return 0;
}
Example 3: Using sizeof with Array
在下面的代码中,我们声明了一个由 10 个 int 值组成的 array 。在数组变量上应用 sizeof 运算符将返回 40。这是因为 int 的大小是 4 个字节。
#include <stdio.h>
int main(){
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf("Size of arr: %d\n", sizeof(arr));
}
Example 4: Using sizeof to Find the Length of an Array
在 C 语言中,我们没有一个函数可以返回数字数组中的元素数量(我们可以使用 strlen() function 查找字符串中的字符数量)。为此,我们可以使用 sizeof() 运算符。
我们首先查找数组大小,然后将其除以其数据类型的大小。
#include <stdio.h>
int main(){
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int y = sizeof(arr)/sizeof(int);
printf("No of elements in arr: %d\n", y);
}
Example 5: Using sizeof in Dynamic Memory Allocation
malloc() 函数与以下 syntax 一起使用 −
type *ptr = (type *) malloc(sizeof(type)*number);
以下语句分配一个包含 10 个整数的块,并将其地址存储在指针中 −
int *ptr = (int *)malloc(sizeof(int)*10);
当 sizeof() 与表达式一起使用时,它将返回表达式的长度。这里有一个示例。
#include <stdio.h>
int main(){
char a = 'S';
double b = 4.65;
printf("Size of variable a: %d\n",sizeof(a));
printf("Size of an expression: %d\n",sizeof(a+b));
int s = (int)(a+b);
printf("Size of explicitly converted expression: %d\n",sizeof(s));
return 0;
}
Example 6: The Size of a Pointer in C
sizeof() 运算符返回相同的值,而与类型无关。其中包括内置类型的 pointer 、派生类型或 double pointer 。
#include <stdio.h>
int main(){
printf("Size of int data type: %d \n", sizeof(int *));
printf("Size of char data type: %d \n", sizeof(char *));
printf("Size of float data type: %d \n", sizeof(float *));
printf("Size of double data type: %d \n", sizeof(double *));
printf("Size of double pointer type: %d \n", sizeof(int **));
}