CodeSky 代码之空

随手记录自己的学习过程

C 外部变量的使用

2014-02-22 17:45分类: C评论: 0

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

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

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

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

举个例子:

1#include <stdio.h>
2
3#define MAXLINE 1000
4
5int max;
6char line[MAXLINE];
7char longest[MAXLINE];
8
9int getline(void);
10void copy(void);
11
12main()
13{
14    int len;
15//    extern int max;
16//    extern char longest[];
17
18    max = 0;
19    while((len = getline()) > 0)
20        if (len > max) {
21            max = len;
22            copy();
23        }
24    if (max > 0)
25        printf("%s", longest);
26    return 0;
27}
28
29int getline(void)
30{
31    int c, i;
32    extern char line[];
33
34    for (i = 0; i < MAXLINE - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
35        line[i] = c;
36    if (c == '\n') {
37        line[i] = c;
38        ++i;
39    }
40    line[i] = '\0';
41    return i;
42}
43
44void copy(void)
45{
46    int i;
47    extern char line[], longest[];
48
49    i = 0;
50    while ((longest[i] = line[i]) != '\0')
51        ++i;
52}
53
54

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

评论 (0)