c语言 sizeof理解
2018-06-18 04:15:47来源:未知 阅读 ()
1、基本数据类型 char :1 short:2 int 4 long 4 long long :8 float:4 double :8字节。
2、数组:对应的基本数据类型的sizeof值*长度 例如 int arr[20] ; sizeof(arr) 的值就是 80。
3、结构体类型:
A:
结构体类型的sizeof的返回值不是将内部的值简单的相加,而是根据内部最大的数据类型分配地址空间的 ,
以最大数据类型所占字节为基本单位增加空间。且一定是最大值的整数倍。举例如下
struct test {
int num;
char ch;
double dou;
}te;
则sizeof(te)的值不是13而是16,只是为什么了 ,我们来分析一下,就如上面所说最大类型为double,他的值
为8,16真好是他的2倍,以为一个double占了8个字节,就还剩下8个字节,int 占4个 char 占1个 所以说其实还有
3个字节根本就没用,但这就结构体分配内存的规则。
B:
现在我们将在结构体内部添加一个long类型,看看结果如何
struct test {
int num;
char ch;
double dou;
long l;
}te;
此时sizeof(te)的值应该就是24字节,可以自己试试以为一个double 一个int 一个long就是16字节,还多一个char
则还要分配8个字节出来。
C:
另外如果如果结构体中存在数组类型,不影响上述配备,直接加上数组的大小 如下
struct test {
int num;
char ch;
double dou;
long l;
double d[3];
}te;
此时sizeof(te) 的值为48,直接24+24。
D:
最后结构体中有结构体类型,不会一个结构体类型为最大类型值,而是内部结构体中的最大值和最大值类型比较,取最大的。
struct test2 {
struct test te;
int i;
}te2;
则sizeof(te2)的值为56
补充 ,如int arr[3]是数组类型的int,也要参与比较。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:从汇编角度分析C语言的过程调用
下一篇:C语言输出格式总结
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- 透彻理解C++11新特性:右值引用、std::move、std::forward 2020-04-30
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
- C语言实现经典游戏——扫雷! 2020-04-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash