【C语言深度剖析】一、关键字

一、关键字分类

一般认为关键字有32个,这都是C90(C89)的标准,C99后边又增加了5个关键字,但由于目前的编译器对C99的支持并不好,所以后面默认使用C90,32个关键字;

1、补充代码

#include 
#include 

int main()
{
    printf("hello world!\n");
    system("pause");
    return 0;
}

上述代码,在vs环境下执行编译链接本质上就是将文本文件转化为可执行的二进制文件,在Windows下双击可直接运行可执行文件,双击的本质就是打开文件而打开文件的本质就是将程序数据加载到内存中让计算机运行

未加载前程序数据在哪?

在硬盘中;

为什么要把程序加载到内存中?

由于冯诺依曼体系结构定义的,任何数据在处理时,都需要先加载到内存中,CPU再进行处理;

二、定义与声明

什么是变量?

在内存中开辟指定大小的空间,变量都是在运行程序时开辟的,而所有的变量都是要在内存中某个位置开辟空间;

如何定义变量?

初始化;char c=‘c’;

赋值;    c=‘d’;

为什么要定义变量?

因为数据从硬盘加载到内存中是一大块加载进去的。而cpu在计算时只能一步一步的计算,所以需要定义变量,将临时有效数据暂时存储起来,等待后续处理。

变量定义的本质

程序运行需要加载到内存中;

程序计算需要使用变量

本质是在内存中开辟一块空间保存数据;

变量声明的本质

声明可以有多次,在变量定义后,声明出来在编译阶段处理;

三、auto关键字

变量的分类

局部变量:一般是定义在代码块内的;在对应函数的栈帧中保存;只在其代码块中有效;

全局变量:在代码块外的;在全局数据区中保存;在程序运行期间都有效;

生命周期:指的是变量从出现到释放的时间;

作用域:指的是只能在代码块中使用,出了代码块不能用;

例如,一个人从出生到死亡的时间叫做声明周期,而此人经常在某个地方活动,那这个地方是它的作用域;

如何使用auto?

一般在代码块中定义的局部变量默认都是auto修饰的,

四、register关键字

register修饰的变量尽量将所修饰的变量放到CPU中,从而达到提高效率的目的;

什么样的变量可以采用register?

        ·局部的,如果是全局的可能会长时间占用寄存器;

        ·不会被写入的,因为在写入的时候会再次进入内存,然后重新被加载;

        ·高频读取的,这是提高效率所在;

        ·尽量不要大量使用,寄存器的数量是有限的;

int main()
{
    //int pass = 100; //如果后边会对pass进行大量的读取,那么在前面加上register
    register int pass = 100;
    printf("%d\n", pass);
    return 0;
}

注:

寄存器变量不能取地址,语法不允许;

五、static 关键字

你可能感兴趣的:(c语言,开发语言)