1 union用法
C语言中的union在语法上与struct相似。
union只分配最大成员的空间,所有成员共享这个空间
2 union的注意事项
union的使用受系统大小端的影响
编程:判断系统的大小端
#include <stdio.h>// 1:小端,0:大端
int system_mode()
{union SM{int i;char c;};union SM sm;sm.i = 1;return sm.c;
}int main()
{printf("System Mode: %d\n", system_mode());return 0;
}
总结:
union中的所有数据成员共享同一个存储空间。
union的使用会受到系统大小端的影响。
参考:https://blog.csdn.net/qq_20233867/article/details/78441256
enum 用法
1 枚举类型的使用方法
enum是C语言中的一种自定义类型。
enum值是可以根据需要自定义的整形值。
第一个定义的enum值默认为0。
默认情况下的enum的值是在前一个定义值的基础上加1。
enum类型的变量只能取定义时的离散值(enum变量实际上是可以赋值任意的整数值的)。
2 枚举类型的特殊意义
enum中定义的值是C语言真正意义上的常量。
注意:&只能对变量取地址。
在工程中enum多用于定义整形常量。
案例分析:enum使用
#include <stdio.h>enum
{ARRAY_SIZE = 10
};enum Color
{RED = 0x00FF0000,GREEN = 0x0000FF00,BLUE = 0x000000FF
};void PrintColor(enum Color c)
{switch( c ){case RED:printf("Color: RED (0x%08X)\n", c);break;case GREEN:printf("Color: GREEN (0x%08X)\n", c);break;case BLUE:printf("Color: BLUE(0x%08X)\n", c);break;}
}void InitArray(int array[])
{int i = 0;for(i=0; i<ARRAY_SIZE; i++){array[i] = i + 1;}
}void PrintArray(int array[])
{int i = 0;for(i=0; i<ARRAY_SIZE; i++){printf("%d\n", array[i]);}
}int main()
{enum Color c = GREEN;int array[ARRAY_SIZE] = {0};PrintColor(c);InitArray(array);PrintArray(array);return 0;
}
参考:https://blog.csdn.net/qq_20233867/article/details/78450846