C语言总结之关键字

By AverageJoeWang
 标签:

1.变量的声明,定义,初始化

  • 声明一个变量不会分配空间,不占用内存

  • 定义一个变量创建了对象并且分配空间,空间中的内容不确定

  • 初始化分为显示和隐式初始化;初始化是为了给定义的变量进行赋值或者清空变量的

2.auto

  • auto是在变量类型缺省的情况下默认为auto

3.register和寄存器

  • 放在寄存器中的内容能够被cpu更快得找到和使用,效率高

  • register请求编译器将变量放在cpu的寄存器中,而不是通过内存寻址方式访问

  • 应该尽可能少的定义register变量,防止寄存器占满而降低效率

  • register定义的变量不放在内存中,不能通过”&”来获取register变量的地址

4.static

第一种作用,修饰变量

变量分为全局变量和局部变量,利用static定义的变量都存储内存的静态区

  • 在利用static定义的全局变量时,作用域为此变量的定义开始到当前文件末尾间,在此变量前面的不可使用

  • 定义static定义的局部变量,即定义在函数中,作用于也在函数中,由于static存储在内存的静态区,但是在函数执行结束以后,该变量仍然存储在内存中,在下次调用的时候使用的是本次存储的变量的值。

#include<stdio.h>

void fun()
{
    static i = 0;
    printf("i = %d\n", i++);
}

main()
{
    int n = 3;
    while(n--) fun();

}
//结果分别为0,1,2

第二种作用:修饰函数

+ 此处的修饰函数不从存储角度,而是从函数作用的角度来考虑

  • 修饰的函数是指static定义的函数仅局限于本文件,又称为内部函数

  • 内部函数的好处是不用担心自己写的函数与函数库函数或者其他文件函数同名

static void printf();