C语言编程题(五)sizeof结构体与字节对齐

cs 复制代码
struct A
{
    long num;
    char *name;
    short int data;
    char ha;
    short ba[5];
} *p;

int main()
{

    printf("结构体A的大小:%d\n", sizeof(struct A));
    printf("num的大小:%d\n", sizeof(((struct A *)0)->num));
    printf("name的大小:%d\n", sizeof(((struct A *)0)->name));
    printf("data的大小:%d\n", sizeof(((struct A *)0)->data));
    printf("ha大小:%d\n", sizeof(((struct A *)0)->ha));
    printf("ba的大小:%d\n", sizeof(((struct A *)0)->ba));
    return 0;
}

在32位机器上,在对齐为4情况下,sizeof(long)的结果为4字节,sizeof(char*)的结果为4字节,sizeof(short int)的结果与sizeof(short)的结果都为2字节,sizeof(char)的结果为1字节,sizeof(int)的结果为4字节

strlen("\0")与sizeof("\0")

strlen("\0") = 0,sizeof("\0") = 2。

strlen

strlen用来计算字符串的长度,它从内存的某个位置开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值

sizeof

sizeof是C语言的关键字,它以字节的形式给出了其操作数的存储大小,操作数可以是一个表达式或括在括号内的类型名,操作数的存储大小由操作数的类型决定

sizeof("\0") = 2,这是因为在C/C++中,字符串字面量(以双引号括起来的字符序列)包括其实际字符内容和一个null终止符('\0')作为字符串的结束标志。因此,字符串 "\0" 实际上包含两个字符:一个是null终止符,另一个是实际的字符。

相关推荐
§ꦿCFོ༉1 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
投图匠1 小时前
十种不同风格的 CTP接口 框架
开发语言·python
爱笑的k115 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
X1A0RAN6 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>7 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮7 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
布莱克6059 小时前
Swift 常量详解:从 let 到编译期优化
服务器·开发语言·ssh·swift·常量·let
布莱克6059 小时前
Swift 可选类型(Optionals)详解:从原理到实战
开发语言·安全·ssh·swift·optional·可选类型
Severus_black10 小时前
【C++初阶】Stack、Queue算法题大练兵!
c语言·c++·算法·stl
瑞雪兆丰年兮11 小时前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb