C 外部变量的使用

书中看到这样一段目前仅仅根据自己的理解mark一下,说不定理解的不正确。

外部变量似乎和全局变量是差不多一个意思的(函数中的局部变量在C中称作自动变量)。

外部变量必须定义在所有函数之外,且只能定义一次,这点很好理解,变量自然是唯一的,在每个需要访问外部变量的函数中,必须声明相应的外部变量,此时说明其类型。

显示声明用extern,某些情况下可以省略,那就是外部变量的定义出现在他所使用的函数前(先定义在使用,我觉得在正常不过)。

举个例子:

#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;
}

int getline(void)
{
    int c, i;
    extern char line[];

    for (i = 0; i < MAXLINE - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
        line[i] = c;
    if (c == '\n') {
        line[i] = c;
        ++i;
    }
    line[i] = '\0';
    return i;
}

void copy(void)
{
    int i;
    extern char line[], longest[];

    i = 0;
    while ((longest[i] = line[i]) != '\0')
        ++i;
}

注销掉的两句,加或者不加不影响程序运行的结果。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 知识, 语法

添加新评论