第43课 函数的意义

函数的由来:

模块化程序设计:

C语言中的模块化:

面向过程的程序设计:

函数的声明和定义:

声明和定义是不同的。示例如下:

 1 #include <stdio.h>
 2 #include <malloc.h>
 3 
 4 extern int g_var;
 5 
 6 extern struct Test;
 7 
 8 int main()
 9 {
10     extern void f(int i, int j);
11     extern int g(int x);
12     
13     struct Test* p = NULL; // (struct Test*)malloc(sizeof(struct Test));
14     
15     printf("p = %p\n", p);
16     
17     //g_var = 10;
18     
19     printf("g_var = %d\n", g_var);
20     
21     f(1, 2);
22     
23     printf("g(3) = %d\n", g(3));
24     
25     free(p);
26     
27     return 0;
28 }

global.c如下:

 1 #include <stdio.h>
 2 
 3 int g_var = 10;
 4 
 5 struct Test
 6 {
 7     int x;
 8     int y;
 9 };
10 
11 void f(int i, int j)
12 {
13     printf("i + j = %d\n", i + j);
14 }
15 
16 int g(int x)
17 {
18     return (int)(2 * x + g_var);
19 }

第4行说明g_var在其它文件中定义,在这里不会再分配存储空间。第6行声明有struct  Test这样一个结构体(并不是声明变量),这里是告诉编译器在后续的编译过程中如果看到了struct Test不要意外,不要报错,但是也只能定义这个结构体的指针。例如,第13行,因为我们在这个文件中不能得到这个结构体的大小。

运行结果如下:

我们将global.c中第三行的g_var的声明改成float类型,再次编译运行,如下:

可以看到g_var变成了一个很大的值,因为从float到int,它的解释方式变了。

小结:

猜你喜欢

转载自www.cnblogs.com/wanmeishenghuo/p/9557639.html
今日推荐