c++学习2 基础关键词
三 volatile强制访问内存
在一个变量的频繁使用中,系统为了提高效率,会自动将内存里面的数据放入CPU里的寄存器里。但在某些特殊场景下,放入寄存器这个操作反倒会导致CPU无法及时获取最新的一手数据导致失误(比如烟雾报警机器)所以这个时候为了防止data数据被放入CPU里面的寄存器(防止被优化),我们要给计算机一个指令,让CPU每一次处理数据都是从内存获取的。
example:
volatile int data=0;//对data的访问,必须从内存访问(防止编译器优化)。
四 sizeof测量类型的大小
类型本身不占用空间,但是内存类型有大小。比如int类型啊,int类型占4个字节吗(4B)?不是的,是在写了 "int data;"后,这个“data”变量占用4个字节的空间(4B)。类型有大小,但是它不占空间。只有当类型定义变量的时候,这个变量才会占据相对应类型的空间大小。所以说sizeof测类型大小,倒不如说sizeof测量的是类型未来定义的变量的所占空间的大小。
example:
cout<<sizeof('a')<<endl;//c++自动识别数据类型,这个类型是“char”,大小是一个字节(1B),屏幕显示“1”。
cout<<sizeof(10)<<endl;//如法炮制,int类型,4个字节(4B)。
cout<<sizeof(short)<<endl;//2B。
cout<<sizeof(long)<<endl;//32位平台,4B。
cout<<sizeof(float)<<endl;4B。
cout<<sizeof(double)<<endl;8B。
五 typedef给已有的类型取别名
typedef不能创建新的类型,它的功能是将名称冗长且复杂的类型名取一个短小的名称。
<s> 原来是起外号(喜 </s>
typedef的使用步骤:
1.先用已有的类型名定义一个普通的变量;
2.用别名替代掉变量名;
3.在整个表达式前面加上"typedef";
example:
int num;//步骤一。
int INT666;//步骤二。
typedef int INT666;//步骤三。
INT666 a;//作用与"int a;"等效,INT666就是int类型的别名。
int b;//已有的类型不会失效被覆盖,仍让有效。
----------------------------------------------------------------------------------------------
int arr[5];
int MYARR[5];
typedef int MYARR[5];
MYARR arr={10,20,30,40,50};
for(int i=0;i<5;i++)
{
cout<<arr[i]<<" ";
} cout<<endl;
//结果是“10 20 30 40 50”。
----------------------------------------------------------------------------------------------
int *p;
int *MYP;
typedef int *MYP;
MYP p;//p的类型就是int *类型。相当于“int *p”。
typedef的好处与作用:
一:扩展系统的兼容性,提高项目的可移植性;
二:后期学习与应用结构体和类型的时候可以帮助我们简洁代码,方便好用。