A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dushoupeng 中级黑马   /  2015-7-12 08:51  /  616 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.        static和extern修饰局部变量
static和extern都是用来修饰变量的(局部static实际也是全局的)
static修饰的变量 只有你的包含那个变量定义的源代码文件可以访问(内部的变量)
extern定义的变量的哪个源文件都可以访问 只要生命了就可以(外部变量)
  static(静态变量) 和 extern 修饰局部变量

      static修饰局部变量:
         //作用:1)static定义的变量的作用域会得到延长
         //     2) static定义变量的语句只会被执行一次

      extern是不能够修饰局部变量的

#include <stdio.h>
/**
*
*/
void sum(){

    //没有使用static修饰
    int num = 0;
    printf("num = %d\n",num);  //0
    num++;

}

void sum1(){
    //static 可以修饰局部变量
    //作用:1)static定义的变量的作用域会得到延长
    //     2) static定义变量的语句只会被执行一次
    static int num = 0;
    printf("num = %d\n",num);  //0
    num++;
   
}


void sum2(){
   
    //extern int num = 0;
    int num = 0;
    printf("num = %d\n",num);  //0
    num++;
   
}

int main(int argc, const char * argv[]) {
   
//    sum1();
//    sum1();
//    sum1();
   
    return 0;
}
2.         static和extern修饰全局变量
全局变量:
   内部变量:只能在本文件中访问的变量
外部变量:可以在其他访问的变量,默认所有全局变量都是外部变量
Static作用:
声明一个内部变量
定义一个内部变量
由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。
注意:
在不同文件中可以定义同名的内部变量,互不影响。
   static 对全局变量的作用(内部变量)

          static修饰的全局变量,表示该全局变量只能在当前文件中使用,而不能在其他文件中使用
   
          在不同的文件中,使用static可以声明的同名的变量

    extern 对全局变量的作用

          extern修饰的全局变量,表示当前变量可以在本文件中使用,也可以在
          其他文件中使用

          注意:
          1)extern声明的全局变量在不同的文件中不能同名(两个文件须由包含关系)
         

#include <stdio.h>
#include <stdlib.h>
#include "test.h"
static int num = 10;  //声明同名变量
//extern int a=10;    //因为 test.c文件中已经定义a了
//全局声明
//2)extern int a;
//
int a; //省略了extern
//不能声明不存在的变量
extern int b;
int x; //全局变量默认的初始化为0
int main() {
   
    printf("num = %d\n",num);
    //调用test.c中的函数
    test1();
   
    //1)在使用a之前 extern int a;  //声明变量a
    printf("-->a = %d\n ",a);
    printf("x = %d\n",x);
    test2();

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马