Volatile的使用
类型修正符(type-modifier),限定一个对象可被外部进程(操作系统、硬件或并发进程等)改变。volatile与变量连用,可以让变量被不同的线程访问和修改。声明时语法:
int volatile vInt;
常用于像中断处理程序之类的异步进程进行内存单元访问。
除了基本类型外,对用户定义类型也可以用volatile类型进行修饰。
注意:可以把一个非volatile int赋给volatile int,但是不能把非volatile对象赋给一个volatile对象。示例:
volatile int i=3;
int j;
j=i;
cout<<j<<endl;
枚举
在“枚举”类型的定义中列举出所有可能的取值,被说di明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
枚举的定义枚举类型定义的一般形式为:
enum 枚举名{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;
#include <iostream>
#include <string>
using namespace std;
int main()
{
enum weekday{mon,tuesday,wednesday,thursday,friday,saturday,sunday};
enum weekday t=mon;
cout<<t<<endl;
getchar();
} Answer:0;
当我们要使用同一种类型的聚集数时,采用枚举
enum open_modes{ input,output,append }; 默认第一个值时0,后面的值逐次加一。
枚举类型对象的初始化或赋值,只能通过其枚举成员来进行。
enum open_status{input,output,appedn};
open_status a;
a=output;
cout<<a<<endl;
open_status b;
b=3; //编译不通过,因为b时enum类型,不能用常量来初始化
union的使用
#include <stdio.h>
union
{
int i;
char c[2];
}A;
void main()
{
A.c[0]=10;
A.c[1]=1;
printf("%d", A.i);
}
输出结果是0x0000010A=266!
引申:通过这道题的方法,我们可以判断CPU是小端格式还是大端格式!
union主要是共享内存,分配内存以其最大的结构或对象为大小,即sizeof最大的。在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。一下转载自网站:
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也
可以使用联合体来发挥其长处