码迷,mamicode.com
首页 > 其他好文 > 详细

第43课 函数的意义

时间:2018-08-30 02:12:43      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:\n   test   oat   font   一个   width   display   com   isp   

函数的由来:

技术分享图片

 

模块化程序设计:

技术分享图片

 

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,它的解释方式变了。

 

小结:

技术分享图片

 

第43课 函数的意义

标签:\n   test   oat   font   一个   width   display   com   isp   

原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9557639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!