《c和指针》笔记3

作用域、存储类型示例

//默认链接属性,external,存储于静态内存

int a = 5;



//默认链接属性,其实extern是可以不要的,但是风格上加上关键字是有好处的,存储于静态内存

extern int b;



//因为加上了static,链接属性从external变为internal,源文件私有,存储于静态内存

static int c;



//默认链接属性,可以被任何文件调用,但是其他文件必须要有d的原型,如果加上static的话,就会变成源文件私有。对于函数而言代码都是存储在静态内存中的

int d (int e)

{

    //局部变量,自动存储类型,存储于堆栈,作用域仅限于该函数,每次函数调用都被隐式初始化为15

    int f = 15;



    //寄存器变量,存储于寄存器,初始值是垃圾

    register int b;



    //静态变量,当程序开始执行时被初始化为20,当函数每次被调用时不进行初始化。

    static int g = 20;



    //该处声明并不需要,因为a在作用域范围之内

    extern int a;

    ...

    {

        //e、a都是局部变量,自动存储类型,a会隐藏第一行a,e也会隐藏d函数的形参e,作用域仅在当前代码块

        int e;

        int a;



        //因为添加关键字extern,链接属性为external,该处的关键字是必须的,不然会变为局部变量

        extern int h;

        ...

    }

    ...

    {

        //都是局部变量,自动存储类型,作用域尽在当前代码块内,e会隐藏函数d的形参e

        int x;

        int e;

        ...

    }

}



//静态链接属性,不能被这个源文件以外的任何函数调用,作用域从声明的位置到源文件结束

static int i()

{

    ...

}



...

  *对于以上隐藏其他变量的部分,编译器可以使用相同的内存来存储不同代码块中的相同变量名的不同变量。

 

  对于语句部分的就省略了,仍然是关于if/if-else/switch/for/while等的介绍和用法

 

  以上今天的学习就到此结束了,明天继续,加油!

你可能感兴趣的:(指针)