讲师中心 微信公众号
AI工具推荐 视频效率加速

如何用C++的sizeof运算符来计算不同数据类型的大小

雨丽姑娘_9321

雨丽姑娘_9321

发布时间:2025-09-07 08:36:01

|

1168人浏览过

|

来源于php中文网

原创

sizeof是C++编译时运算符,用于计算类型或变量的字节大小,返回size_t类型,常见类型如char占1字节、int占4字节、double占8字节,数组使用时需注意退化为指针问题,结构体大小受内存对齐影响可能大于成员总和。

如何用c++的sizeof运算符来计算不同数据类型的大小

在C++中,sizeof 是一个编译时运算符,用于计算变量或数据类型在内存中所占的字节数。它可以帮助我们了解不同数据类型在当前平台上的实际大小,这对内存管理、结构体对齐和跨平台开发非常有用。

基本语法

sizeof 可以用于类型名或变量:

  • sizeof(type) // 计算数据类型的大小
  • sizeof variable // 计算变量的大小

返回值类型是 size_t,一个无符号整数类型,通常用 %zu 格式输出(在 printf 中)。

常见数据类型的大小

以下是一个示例程序,展示如何使用 sizeof 计算常见数据类型的大小:

立即学习“C++免费学习笔记(深入)”;

#include <iostream>
using namespace std;

int main() {
    cout << "char: " << sizeof(char) << " 字节" << endl;
    cout << "int: " << sizeof(int) << " 字节" << endl;
    cout << "float: " << sizeof(float) << " 字节" << endl;
    cout << "double: " << sizeof(double) << " 字节" << endl;
    cout << "bool: " << sizeof(bool) << " 字节" << endl;
    cout << "short: " << sizeof(short) << " 字节" << endl;
    cout << "long: " << sizeof(long) << " 字节" << endl;
    cout << "long long: " << sizeof(long long) << " 字节" << endl;

    return 0;
}

典型输出(在64位系统上):

linux-sysadmin
linux-sysadmin

Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...

下载
  • char: 1 字节
  • int: 4 字节
  • float: 4 字节
  • double: 8 字节
  • bool: 1 字节
  • short: 2 字节
  • long: 8 字节(Linux/64位)或 4 字节(Windows)
  • long long: 8 字节

对变量和数组使用 sizeof

sizeof 也可以用于变量和数组,特别注意数组传参时的行为差异。

int arr[10];
cout << "arr 数组总大小: " << sizeof(arr) << " 字节" << endl; // 输出 40(假设 int 为 4 字节)
cout << "单个元素大小: " << sizeof(arr[0]) << " 字节" << endl;
cout << "数组元素个数: " << sizeof(arr) / sizeof(arr[0]) << endl;

注意:当数组作为参数传递给函数时,会退化为指针,sizeof 将返回指针的大小(通常是 8 字节在64位系统上),不再是整个数组的大小。

结构体和类的大小

sizeof 也能用于结构体,但要注意内存对齐的影响:

struct Person {
    char c; // 1 字节
    int i; // 4 字节
    double d; // 8 字节
};

cout << "Person 结构体大小: " << sizeof(Person) << " 字节" << endl;

由于内存对齐,实际大小可能大于各成员大小之和(例如可能是 24 字节而不是 13 字节)。

基本上就这些。sizeof 是一个简单但非常实用的工具,帮助我们理解数据在内存中的布局。不同平台和编译器可能有差异,所以运行测试代码确认最准确。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2431

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

494

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

422

2026.02.12

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

5487

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

604

2025.10.23

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5784

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2404

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

1612

2025.10.17

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

80

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn