C语言sizeof 不是函数吗?

一、问题

sizeof 怎么⽤,它不是函数吗?

二、解答

sizeof 在 C 和 C++ 中不是一个函数,而是一个运算符。它在编译时计算其操作数所占用的内存大小,并返回一个大小(字节数),这个结果是类型或表达式的存储大小,不涉及运行时求值。

sizeof 的基本用法

1、对于基本数据类型

cpp 复制代码
sizeof(int);  // 返回int类型变量占用的字节数

2、对于变量

cpp 复制代码
int a;
sizeof(a);  // 返回变量a占用的字节数,与sizeof(int)相同

3、对于数组

cpp 复制代码
char str[] = "Hello";
sizeof(str);  // 返回整个数组str占用的字节数,包含结束符'\0'

4、对于指针

cpp 复制代码
int* ptr;
sizeof(ptr);  // 返回指针变量ptr的大小,通常是指针在当前平台上的字节数,而不是它所指向
的对象的大小

5、对于用户自定义类型(如结构体、类、联合体)

cpp 复制代码
struct MyStruct {
    int a;
    char b;
};
MyStruct s;
sizeof(s);  // 返回结构体MyStruct实例s占用的总字节数

6、对于类型别名

cpp 复制代码
typedef double MyDouble;
sizeof(MyDouble);  // 返回double类型的大小

从上⾯的例⼦可以知道,sizeof 不是函数,它只是关键字,但是⼀般情况下,它将以"sizeof()" 貌似函数的形式出现。

sizeof 表⽰的是计算对象所占内存空间的⼤⼩。"sizeof0"和函数的形式⼀样,函数名 后⾯跟了⼀对括号,但实际上它只是关键字,并⾮函数。

另外,需要注意的是,sizeof 在计算变量所占空间⼤⼩时,括号是可以省略的,⽽在 计算类型⼤⼩时,括号则不能省略

三、总结

总之,sizeof 运算符提供了一种获取对象或类型存储要求的方法,这对于动态分配内存、对齐处理以及理解程序中的内存布局非常有用。

相关推荐
小小龙学IT11 小时前
Go 泛型(Generics)深度解析:从类型参数到生产实践
开发语言·数据库·golang
hold?fish:palm11 小时前
45 二叉树的右视图
开发语言·c++·算法
MI_farmer11 小时前
Anaconda 安装在 D 盘但虚拟环境跑到 C 盘,以及 Conda PermissionError: WinError 5 的解决方法
c语言·开发语言·conda
“AI国潮设计-小江”11 小时前
[AIGC实战] 基于Stable Diffusion的潮汕非遗IP自动化生成工作流(附Python批量处理脚本)
开发语言·人工智能·python·prompt·aigc
布莱克60512 小时前
在C++中,构造函数能不能是虚函数?析构函数为什么要虚?
开发语言·c++·构造函数·析构函数·虚函数
落魄实习生12 小时前
Agent Scope Java 2.x 系列【1】核心架构
java·开发语言·架构
一水鉴天12 小时前
三套语言:STL SPL/ SQL 20260928(元宝)
开发语言
Sarvartha12 小时前
数组基础知识
java·开发语言
泡海椒12 小时前
金融报表开发:jquick-pdf K 线图 PDF 可视化解决方案
java·开发语言·金融·pdf
孙启超12 小时前
【AI开发之Rust】第 17 课:项目总览与核心架构 —— AI 助手 Rust 核心从 0 到 1
开发语言·后端·rust