zoukankan      html  css  js  c++  java
  • 外部变量与作用域

    #include <stdio.h>
    #define MAXLINE 1000
    int max;
    char line[MAXLINE];
    char longest[MAXLINE];
    int getline(void);
    void copy(void);
    /*打印最长的行,*特别版本*/
    main()
    {
     int len;
     extern int max;
     extern char longest[];
     
     max = 0;
     while((len = getline()) > 0)
      if(len > max)
      {
       max =len;
       copy();
      }
      if(max > 0)  /*存在这样的行*/
       printf("%s",longest);
      return 0; 
    }
    /*getline函数:特别版本*/
    int getline(void)
    {
     int c,i;
     extern char line[];
     for(i=0;i<MAXLINE-1 && c != ' '; ++i)
      line[i]=c;
     if(c == ' ')
     {
      line[i] = c;
      ++i;
     }
     line[i] = '';
     return i;
    }
    /*copy函数:特别版本*/
    void copy(void)
    {
     int i;
     extern char line[],longest[];
     i = 0;
     while((longest[i] = line[i]) != '')
      ++i;
    }
    在该例子中,前几行定义了main、getline与copy函数使用的几个外部变量,声明了各外部变量的类型,这样编译程序将为他们分配存储单元。从语法角度上来看,外部变量的定义与局部变量的定义是相同的,但由于他们各位于各函数的外部,因此这些变量是外部变量。函数在使用外部变量之前,必须知道外部变量的名字。要达到该目的,一种方式是在函数中使用extern类型的声明。这种类型的声明除了在前面加一个关键字extern外,其他方面与普通变量的声明相同。
    如果程序包含在多个源文件中,而某个变量在file1文件中定义、在file2和file3中使用,那么在文件file2和文件file3中就需要使用extern声明来建立该变量与其定义之间的联系。人们通常把变量和函数的extern声明放在一个单独的文件中(习惯上称之为头文件),并在每个源文件的开头使用#include语句把所有要用的头文件包含进来。后缀名.h约定为头文件名的扩展名。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    「CH6801」棋盘覆盖
    「POJ3613」Cow Relays
    「Luogu4556」Vani有约会-雨天的尾巴
    The Proof of Fibonacci GCD
    Ubuntu flatabulous 主题
    CSP-S 2019 复赛游记
    「Luogu1402」酒店之王
    HDU/5499/模拟
    cfedu/A/求和
    HDU<1372>/bfs
  • 原文地址:https://www.cnblogs.com/TheFly/p/11838755.html
Copyright © 2011-2022 走看看