C 外部变量的使用
书中看到这样一段目前仅仅根据自己的理解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)