- C 语言编程教程
- C 语言 - 首页
- C 语言基础
- C 语言 - 概述
- C 语言 - 特性
- C 语言 - 历史
- C 语言 - 环境搭建
- C 语言 - 程序结构
- C 语言 - Hello World
- C 语言 - 编译过程
- C 语言 - 注释
- C 语言 - 词法单元
- C 语言 - 关键字
- C 语言 - 标识符
- C 语言 - 用户输入
- C 语言 - 基本语法
- C 语言 - 数据类型
- C 语言 - 变量
- C 语言 - 整数提升
- C 语言 - 类型转换
- C 语言 - 类型强制转换
- C 语言 - 布尔值
- C 语言中的常量和字面量
- C 语言 - 常量
- C 语言 - 字面量
- C 语言 - 转义序列
- C 语言 - 格式说明符
- C 语言中的运算符
- C 语言 - 运算符
- C 语言 - 算术运算符
- C 语言 - 关系运算符
- C 语言 - 逻辑运算符
- C 语言 - 位运算符
- C 语言 - 赋值运算符
- C 语言 - 一元运算符
- C 语言 - 自增和自减运算符
- C 语言 - 三元运算符
- C 语言 - sizeof 运算符
- C 语言 - 运算符优先级
- C 语言 - 其他运算符
- C 语言中的决策语句
- C 语言 - 决策语句
- C 语言 - if 语句
- C 语言 - if...else 语句
- C 语言 - 嵌套 if 语句
- C 语言 - switch 语句
- C 语言 - 嵌套 switch 语句
- C 语言中的循环语句
- C 语言 - 循环语句
- C 语言 - while 循环
- C 语言 - for 循环
- C 语言 - do...while 循环
- C 语言 - 嵌套循环
- C 语言 - 无限循环
- C 语言 - break 语句
- C 语言 - continue 语句
- C 语言 - goto 语句
- C 语言中的函数
- C 语言 - 函数
- C 语言 - 主函数
- C 语言 - 按值调用函数
- C 语言 - 按引用调用函数
- C 语言 - 嵌套函数
- C 语言 - 可变参数函数
- C 语言 - 用户自定义函数
- C 语言 - 回调函数
- C 语言 - 返回语句
- C 语言 - 递归
- C 语言中的作用域规则
- C 语言 - 作用域规则
- C 语言 - 静态变量
- C 语言 - 全局变量
- C 语言中的数组
- C 语言 - 数组
- C 语言 - 数组的特性
- C 语言 - 多维数组
- C 语言 - 将数组传递给函数
- C 语言 - 从函数返回数组
- C 语言 - 变长数组
- C 语言中的指针
- C 语言 - 指针
- C 语言 - 指针和数组
- C 语言 - 指针的应用
- C 语言 - 指针运算
- C 语言 - 指针数组
- C 语言 - 指向指针的指针
- C 语言 - 将指针传递给函数
- C 语言 - 从函数返回指针
- C 语言 - 函数指针
- C 语言 - 指向数组的指针
- C 语言 - 指向结构体的指针
- C 语言 - 指针链
- C 语言 - 指针与数组的区别
- C 语言 - 字符指针和函数
- C 语言 - 空指针
- C 语言 - void 指针
- C 语言 - 悬空指针
- C 语言 - 解引用指针
- C 语言 - 近指针、远指针和巨指针
- C 语言 - 指针数组的初始化
- C 语言 - 指针与多维数组的区别
- C 语言中的字符串
- C 语言 - 字符串
- C 语言 - 字符串数组
- C 语言 - 特殊字符
- C 语言中的结构体和联合体
- C 语言 - 结构体
- C 语言 - 结构体和函数
- C 语言 - 结构体数组
- C 语言 - 自引用结构体
- C 语言 - 查找表
- C 语言 - 点 (.) 运算符
- C 语言 - 枚举 (enum)
- C 语言 - 结构体填充和打包
- C 语言 - 嵌套结构体
- C 语言 - 匿名结构体和联合体
- C 语言 - 联合体
- C 语言 - 位域
- C 语言 - typedef
- C 语言中的文件处理
- C 语言 - 输入与输出
- C 语言 - 文件 I/O (文件处理)
- C 预处理器
- C 语言 - 预处理器
- C 语言 - 预处理指令
- C 语言 - 预处理器运算符
- C 语言 - 宏
- C 语言 - 头文件
- C 语言中的内存管理
- C 语言 - 内存管理
- C 语言 - 内存地址
- C 语言 - 存储类别
- 其他主题
- C 语言 - 错误处理
- C 语言 - 可变参数
- C 语言 - 命令执行
- C 语言 - 数学函数
- C 语言 - static 关键字
- C 语言 - 随机数生成
- C 语言 - 命令行参数
- C 语言编程资源
- C 语言 - 问答
- C 语言 - 快速指南
- C 语言 - 速查表
- C 语言 - 有用资源
- C 语言 - 讨论
C语言 - sizeof 运算符
sizeof 运算符是一个编译时一元运算符。它用于计算其操作数的大小,操作数可以是数据类型或变量。它返回以字节为单位的大小。
它可以应用于任何数据类型、浮点类型或指针类型变量。
sizeof(type or var);
当 sizeof() 用于数据类型时,它只是返回分配给该数据类型的内存量。在不同的机器上,输出可能不同,例如,32 位系统显示的输出可能与 64 位系统不同。
示例 1:在 C 语言中使用 sizeof 运算符
请看下面的例子。它突出显示了如何在 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;
}
输出
运行此代码后,您将获得以下输出:
Size of variable a: 4 Size of int data type: 4 Size of char data type: 1 Size of float data type: 4 Size of double data type: 8
示例 2:将 sizeof 与结构体一起使用
在这个例子中,我们声明了一个结构体类型并找到结构体类型变量的大小。
#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;
}
输出
运行代码并检查其输出:
Size of employee variable: 24
示例 3:将 sizeof 与数组一起使用
在下面的代码中,我们声明了一个包含 10 个 int 值的数组。对数组变量应用 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));
}
输出
运行代码并检查其输出:
Size of arr: 40
示例 4:使用 sizeof 查找数组的长度
在 C 语言中,我们没有返回数值数组中元素个数的函数(我们可以使用strlen() 函数获取字符串中的字符个数)。为此,我们可以使用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);
}
输出
运行此代码时,它将产生以下输出:
No of elements in arr: 10
示例 5:在动态内存分配中使用 sizeof
sizeof 运算符用于计算要使用malloc()和calloc()函数动态分配的内存块。
malloc() 函数使用以下语法:
type *ptr = (type *) malloc(sizeof(type)*number);
以下语句分配一个包含 10 个整数的块,并将它的地址存储在指针中:
int *ptr = (int *)malloc(sizeof(int)*10);
当 sizeof() 用于表达式时,它返回表达式的 size。这是一个例子。
#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;
}
输出
运行代码并检查其输出:
Size of variable a: 1 Size of an expression: 8 Size of explicitly converted expression: 4
示例 6:C 语言中指针的大小
sizeof()运算符返回相同的值,而不管类型如何。这包括内置类型、派生类型或双指针的指针。
#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 **));
}
输出
运行代码并检查其输出:
Size of int data type: 8 Size of char data type: 8 Size of float data type: 8 Size of double data type: 8 Size of double pointer type: 8
c_operators.htm
广告