【C语言】联合体和结构体
来源:互联网 发布:日记软件什么最好 编辑:程序博客网 时间:2024/04/29 18:13
一、前言
通过学习这两个要从内存这个方面来了解以下,所以小编准备了对这个问题的总结,通过对比学习会更加的深刻了解。
二、内容要点
union – 联合体,它的成员共享同一内存,内存分配时,考虑占内存最多的那个成员。
struct – 结构体,它的每个成员都有自己的内存空间,但空间在同一区域块,分配时还考虑4字节对齐(即不满4的倍数时,凑满到4的倍数)。
三、代码示例
#include<stdio.h>main(){ union { char c; int i; float a ; } test; // float 最长,为4 字节。分配4字节。 struct t { int i; char c; float a; }test2; //i 4 字节, c 1 字节, a 4字节, 共需 9 字节,考虑 4 字节 对齐,分配 12 字节。 int j; test.i=0x1234; test.c='A'; //A对应的16进制的ASCII码为41H printf("%x\n",test.i); printf("%c\n",test.c); printf("%d %d \n",sizeof(test),sizeof(test2)); scanf("%x",&j);}
运行结果:
分析:
小编直接做的时候就写的是1234 ,显然是不对的,没有理解到union的作用。对于本题,int 是4字节, float是4字节,都是最大的,所以这个union的联合体就是4字节。当我们把test.i=0x1234 存入内存的时候,会现存低字节的34,然后在存储高字节的12,当我们存完后结果暂时是3412;后来我们又存储了test.c=’A’,A对应的16进制的ASCII码为41H,所以就会把低字节的34挤掉,结果就变成了1241.
四、小结
C语言-数据类型大小总结:
变量的长度(VC6环境下)
1Byte =8bit ,一字节等于8位。
0 0
- C语言基础-结构体和联合体
- C语言结构体和联合体
- C语言结构体和联合体
- C语言结构体和联合体
- C语言基础-结构体和联合体
- c语言结构体和联合体例题
- C语言中的联合体和结构体
- C语言结构体和联合体小结
- 【C语言】联合体和结构体
- C语言基础-结构体和联合体(ZZ)
- C语言里的结构体和联合体
- 例解 C 语言中的匿名联合体和匿名结构体
- C语言学习大纲--结构体和联合体
- 9.C语言之结构体和联合体
- C语言基础数据类型 结构体和联合体的区别
- C语言系列(六)结构体和联合体
- C语言系列(六)结构体和联合体
- C语言系列(六)结构体和联合体
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递
- 2017年校园招聘ios面试题
- The annotation @Query is disallowed for this location
- 总结一下自己常用的命令
- c# Dictionary 的用法
- 【C语言】联合体和结构体
- 浏览器缓存知识小结及应用
- seek导致视频花屏解决方法
- 视屏码率(比特率)与生成文件的关系
- Qt多线程学习:创建多线程
- HTML5/JS开发框架Kendo UI视频教程集合
- Java字符串替换(replace)
- 图像铅笔画算法
- Android 常用 adb 命令总结