Struct和Union的区别
程序员文章站
2024-02-26 15:35:16
...
Struct:结构体
Union:联合体
联合体是几个不同类型的变量共占一段内存(相互覆盖),因为是内存共享,所以它不能同时存放多个成员的值,而只能存放其中的一个值,就是最后赋予它的值,例如:
uni.a=3,uni.b=4.5,uni.c="A";赋值之后共享的同一块内存的值会被覆盖。对于union的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了。union的内存大小为其内部所有成员的最大值。
union UN
{
char c;//1
int a;//4
float b;//4
double g;
}uni;
void Test()
{
uni.a = 4;
uni.b = 1.5;
uni.c = 'f';
printf("%d\n",uni.a);
printf("%f\n",uni.b);
printf("%c\n",uni.c);
}
int main()
{
Test();
return 0;
}
联合体的应用:大小端
#include<stdio.h>
union UN
{
int i;
char j;
}a;
void Test ()
{
a.i=1;
if(a.j==0)
{
printf("大端\n");
}
else
{
printf("小端\n");
}
}
int main()
{
Test();
return 0;
}
结构体也是由多个不同的数据类型成员组成,但在任何同一时刻,结构体存放所有的成员变量,结构体的不同成员赋值是相互不影响的,它的内存也是按照最大类型的倍数进行分配大小,但还是与顺序有关。
struct student
{
char *name;//4
int age;//4
char *sex;//4
char c;
int num;//4
double b;
}d;
void Test()
{
struct student s;
d.age=12;
printf("%d\n",sizeof(d));
printf("%d\n",d.age);
printf("%s\n",d.sex);
}
int main()
{
Test();
return 0;
}
转载于:https://blog.51cto.com/12951882/1979317
上一篇: 求两个字符串共同子串的长度
下一篇: TCP协议长什么样
推荐阅读
-
Struct和Union的区别
-
C++基础知识(五) C++中union结构,union和struct的区别
-
老生常谈java路径中的反斜杠和斜杠的区别
-
Java中List Set和Map之间的区别_动力节点Java学院整理
-
详解Java中wait和sleep的区别
-
浅谈Python2.6和Python3.0中八进制数字表示的区别
-
详解Java中Comparable和Comparator接口的区别
-
浅谈MyISAM 和 InnoDB 的区别与优化
-
Collection和Collections的区别。 博客分类: JAVA面试题 数据结构
-
Collection和Collections的区别。 博客分类: JAVA面试题 数据结构