2023年C语言sizeof函数详解_C语言sizeof.docx

上传人:w*** 文档编号:66449542 上传时间:2022-12-14 格式:DOCX 页数:5 大小:12.58KB
返回 下载 相关 举报
2023年C语言sizeof函数详解_C语言sizeof.docx_第1页
第1页 / 共5页
2023年C语言sizeof函数详解_C语言sizeof.docx_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2023年C语言sizeof函数详解_C语言sizeof.docx》由会员分享,可在线阅读,更多相关《2023年C语言sizeof函数详解_C语言sizeof.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2023年C语言sizeof函数详解_C语言sizeof 一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符+、-等。 它并不是函数。 sizeof操作符以字节形式给出了其操作数的存储大小。 操作数可以是一个表达式或括在括号内的类型名。 操作数的存储大小由操作数的类型确定。 二、sizeof的运用方法 1、用于数据类型 sizeof运用形式: sizeof(type) 数据类型必需用括号括住: sizeof(int) 2、用于变量 sizeof运用形式: sizeof(var_name) 或 sizeofvar_name 变量名可以不用括号括住.如sizeof

2、(var_name),sizeofvar_name等都是正确形式 带括号的用法更普遍,大多数程序员采纳这种形式。 留意:sizeof操作符不能用于函数类型,不完全类型或位字段。 不完全类型指具有未知存储大小的数据类型, 如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。 例如: sizeof(max) -若此时变量max定义为intmax(); sizeof(char_v)-若此时char_v定义为charchar_vMAX且MAX未知, sizeof(void) 以上都是不正确形式。 三、sizeof的结果(以下结果都是在Linux v2.6 gcc v4获得) sizeo

3、f操作符的结果类型是size_t 它在头文件中定义为: typedef unsigned int size_t; 该类型保证能容纳实现所建立的最大对象的字节大小. 1、ANSIC正式规定字符类型为1字节。 sizeof(char)= 1; sizeof(unsigned char) = 1; sizeof(signed char)= 1; 2、其他类型在ANSIC中没有详细规定,大小依靠于实现。 sizeof(int)= 4;sizeof(unsigned int)= 4;sizeof(short int)= 2;sizeof(unsigned short) = 2;sizeof(long i

4、nt)= 4;sizeof(unsigned long)= 4;sizeof(float)= 4;sizeof(double)= 8;sizeof(long double)= 12; 3、当操作数是指针时,sizeof依靠于编译器。 MicrosoftC/C+7.0中,near类指针字节数为2,far、huge类指针字节数为4。 一般Unix/Linux的指针字节数为4。例如: char *p;/Linux中sizeof(p) = 4; 4、当操作数具有数组类型时,其结果是数组的总字节数。 例如: char a5;intb5;sizeof(a)= 5;sizeof(b) = 20;5、当操作数

5、是详细的字符串或者数值时,会依据详细的类型进行相应转化。例如: sizeof(8)= 4;/自动转化为int类型sizeof(8.8)= 8;/自动转化为double类型,留意,不是float类型sizeof(ab) = 3/自动转化为数组类型,/长度是4,不是3,因为加上了最终的'n'符/有资料说,会自动转化为指针类型(Linux为4)/可能和操作系统与编译器有关系6、当操作数是联合类型时,sizeof是其最大字节成员的字节数。当操作数是结构类型时,sizeof是其成员类型的总字节数,包括补充字节在内。还是让我们拿例子来说话:unionu/对union来说char c;dou

6、ble d;u;sizeof(u) = max(sizeof(c),sizeof(d) = sizeof(1,8) = 8;struct a/对struct来说charb;doublex;a;在Linux上: sizeof(a) = 12; 而一般sizeof(char) + sizeof(double) = 9; 这是因为编译器在考虑对齐问题时,在结构中插入空位以限制各成员对象的地址对齐。 但假如全对齐的话,sizeof(a) = 16, 这是因为b被放到偏移量为0的地址,占1个字节;在存放x时,double类型长度为8,须要放到能被8整除的偏移量上,这时候须要补7个空字节,达到8个,这时候

7、偏移量为8,放上x后长度为16。 在此例中,全部的结构成员都要放在被4整除的地址(Linux的存放方式),这里补3个字节,所以为12。 7、当操作数是函数中的数组形参或函数类型的形参: sizeof给出其指针的大小,Linux中值为4。 四、sizeof与其他操作符的关系 sizeof的优先级为2级,比/、%等3级运算符优先级高。 它可以与其他操作符一起组成表达式: 例如: int i = 10; i * sizeof(int); 五、sizeof的主要用途 1、主要用途是与存储安排和I/O系统那样的例程进行通信。 例如: void*malloc(size_tsize);size_tfread(void*ptr, size_tsize, size_tnmemb, FILE*stream); 2、另一个的主要用途是计算数组中元素的个数。 例如: void*memset(void*s, intc, sizeof(s);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁