C_关键字_1
c90和C89版本关键字为32个,c99之后增加了5个,为37个关键字,但目前不是所有编译器支持c99,所以现在学习大部分认为关键字有32个;vs2013不停屏;
vs2013停屏:
#include <windows.h> //系统头文件,仅仅是为了停屏。
...
system(“pause“);
编译代码时,是将文本代码 --> 可执行程序(二进制文件) --> 双击可执行该文件(存在于debug中的.exe文件);
最终编译器会生成可执行程序并运行;
在win中,双击的本质是运行程序,将程序加载到内存当中;
任何程序在被运行之前都必须被加载到内存当中;
程序没有被加载到内存之前存在于硬盘(外设)之中;
冯诺依曼体系(硬件概念)
外设数据必须先加载到内存,再由CPU访存后,调回内存,转到输出设备(数据放置于内存之后,不是所有数据立马被计算,需要将数据暂时存放于变量之中)
目的:CPU直接访存速度快,访问外设速度慢
变量
变量是在程序运行的时候开辟空间存储,而程序在运行之前就已经被加载到内存中了,所以,所有的变量本质都要在内存的某个位置开辟空间存储;
定义变量:类型 变量名 = 默认值 例:int x = 10; 初始化,可二次赋值;
在内存中暂时存放数据,等待CPU一个一个处理数据;
定义与声明(extern)
定义:开辟空间(只能有一次)
声明:告知曾经定义过的变量(可以声明多次)
代码块:用{}括起来的的区域,叫代码块;
生命周期和作用域
生命周期概念:指该变量从定义到释放的时间的概念
作用域概念:变量起作用的范围
局部变量:在函数和代码块内定义的变量;只能在本代码块有效;
全局变量:在函数和代码块外定义的变量;在整个程序有效;
局部变量和全局变量命名冲突时,局部变量优先使用;
作用域:指该变量的有效区域(影响范围);
生命周期:时间的概念,什么时候被开辟,什么时候被释放;
aoto相关
局部变量,,临时变量,自动变量说的都是一回事;
auto只能用于修饰局部变量,可以省略
结论:C语言和C++中使用auto不一样,在C语言中基本已经不使用;
最快的关键字--register(存储级别的关键字)
高优先级把变量放在寄存器中(建议性的)
计算机中具有存储能力的硬件:
寄存器,cache,内存,SSD/flash/硬盘,光盘
离CPU越近的访问速度越快,越贵
一般被高频读取的/局部的/不会被写入的/ 需要被定义register,如果要使用,不要大量使用,因为寄存器数量有限;
写入:内存中的数据在CPU中被计算后更改了又重新写入到内存内;
被使用后,没有在内存中,而是被开辟在寄存器中,所以没有申请空间,所以不可以被取地址&;
现在的编译器很智能,不需要手动使用该关键字。
寄存器可以被写入(可以被二次赋值);
文档来源:51CTO技术博客https://blog.51cto.com/u_15293050/3034916
页:
[1]