static extern const 用法

static

在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。 
static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 
static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;

#include <stdio.h>

int   fun_1(int);

int main()

{

       int i;

       for (i = 1; i <= 5; i++)

           fun_1(i);

       return 0;

}

int fun_1(int x)

{

          static int count = 0;

       count++;

       printf("I have been called %d times.\n", count);

       return 2*x;

}

extern

extern修饰变量的声明。 

举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。能够被其他模块以extern修饰符引用到的变量通常是全局变量

2 extern修饰函数声明。

从本质上来讲,变量和函数没有区别。函数名是指向函数二进制块开头处的指针。如果文件a.c需要引用b.c中的函数,比如在b.c中原型是int fun(int mu),那么就可以在a.c中声明extern int fun(int mu),然后就能使用fun来做任何事情。

举例:

#include<stdio.h>

int func();

int main()

{

    func(); //1

    extern int num;

    printf("%d",num); //2

    return 0;

}

int num = 3;

int func()

{

    printf("%d\n",num);

}

const

1函数体内修饰局部变量。

2在函数声明时修饰参数。

3修饰全局变量。

#include <stdio.h>

int getNum()

{

       return 100;

}

int main()

{

       int n = 90;

       const int MaxNum1 = getNum(); //运行时初始化

       const int MaxNum2 = n; //运行时初始化

       const int MaxNum3 = 80; //编译时初始化

       printf("%d, %d, %d\n", MaxNum1, MaxNum2, MaxNum3);

       return 0;

}

 

 

猜你喜欢

转载自blog.csdn.net/qq_42560102/article/details/82152502