Linux第一课:LinuxC基础 学习记录day11
八、共用体
不同类型的成员变量公用同一块地址空间
1、格式
union 共用体名
{
成员变量;
};
2、定义共用体变量
union 共用体名 变量名;
union val
{
int a;
char ch;
};
union val v;
v.a = 10;
v.ch = 'a'; // 它他俩不能同时出现,以最后一次赋值为准
3、特性
1)共用体成员共用同一个地址空间
2)赋值顺序以最后一次为准
3)共用体大小为成员变量中最大的数据类型的大小
4)使用共用体测试大小端
九、枚举
1、理解
1、用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将其定义为枚举类型,将变量的值一一列出来,变量的值只限于列举出来的值的范围内
2、将一些比较固定的值一一列出来,比如一年十二个月,一周七天。就可以将这些月份和天数用常量代替,枚举类型和宏定义差不多,宏运行是在预处理阶段完成的,枚举是在预编译阶段完成的
2、定义
用户自定义的数据类型,可以用于声明一组常数
3、格式
enum 枚举名
{
value1,
……
};
注意:
未赋初值时,第一个常数默认为0;如果赋初值则后面的值依次递增
#include <stdio.h>
enum week
{
MON = 1, // 周一
TUE, // 周二
WED, // 周三
THURS, // 周四
FRI, // 周五
};
int main(int argc, char const *argv[])
{
enum week w;
int n = 0;
scanf("%d", &n);
switch (n)
{
case MON: printf("周一\n");break;
case TUE: printf("周二\n");break;
case WED: printf("周三\n");break;
case THURS: printf("周四\n");break;
case FRI: printf("周五\n");break;
}
return 0;
}
十、存储类型
1、auto // 自动型
修饰变量,默认类型
2、static // 静态型
修饰变量:
1、变量的存放在全局区(静态区):如果静态变量有初值,存放在 .data 段;没有初值放在 .bss 段
2、生命周期为整个程序
3、限制作用域:修饰局部变量时,和普通的局部变量作用域没有区别,但是生命周期被延长为整个程序;修饰全局变量时,只能在本文件中使用
4、只初始化一次,赋初值为0;
#include <stdio.h>
void fun()
{
static int a = 0;
a++;
printf("%d\n", a);
}
int main(int argc, char const *argv[])
{
int *p = &a;
fun(); // 1
fun(); // 2 只初始化一次
return 0;
}
修饰函数:
限制函数在本文件中使用
3、extem // 外部引用
通过 extem 可以引用其他文件中的全局变量或函数
4、register // 寄存器类型