Standard C Episode 8

C语言函数和程序结构
通过函数可以把大的计算任务分解成若干个较小任务,从而使得思路更加清晰,同时函数也大大提高了代码的复用率,提高了工作效率。要注意的是多函数之间应该尽可能地高聚合低耦合。另一方面,一个程序可以保存在一个或者多个源文件中。各个文件可以单独编译。

注意:一般地,头文件中不会放那些在程序运行时发生具体效应的语句。例如声明(定义)一个变量的语句是不会放在头文件中的。再例如结构体声明(定义)语句就可以放头文件里,但结构体变量声明(定义)语句是不会放在头文件中的。

make工具可以用来进行项目管理。他可以根据记录在Makefile文件中的要求完成整个编译过程。实际项目中Makefile文件内容复杂,往往还有可以制作Makefile文件的工具。
linux开源软件经典的软件安装步骤是直接从软件源程序开始的,步骤:
(1)make
(2)make install
(3)make clean

1 /*
2 Filename:add.h
3  */
4 #ifndef __ADD_H__
5 #define __ADD_H__
6 void add(int, int);
7 #endif  //__ADD_H__
1 /*
2 Filename: add.c
3  */
4 #include "add.h"
5 int result;
6 void add(int a , int b)
7 {
8     result = a + b;
9 }
1 /*
2 Filename: sub.h
3  */
4 #if !defined(__SUB_H__)
5 #define __SUB_H__
6 int sub(int, int);
7 #endif  //__SUB_H__
1 /*Filename: sub.c
2  */
3 #include "sub.h"
4 int sub(int a, int b)
5 {
6     return a - b;
7 }
 1 /*
 2 Filename: main.c
 3  */
 4
 5 #include "add.h"
 6 #include "sub.h"
 7
 8 #include <stdio.h>
 9 extern int result;// 声明result

10 int main()
11 {
12     add(10, 10);
13     printf("%d + %d = %d \n", 10, 10, result);
14     printf("%d - %d = %d \n", 10, 10, sub(10, 10));
15
16     return 0;
17 }

Makefile

 1 a.out : add.o   sub.o main.c
 2     gcc -c main.c
 3     gcc sub.o add.o main.o
 4 add.o:add.c
 5
 6     gcc -c add.c
 7
 8 sub.o:sub.c
 9     gcc -c sub.c
10 clean:
11     rm *.o a.out
时间: 2024-10-25 14:55:06

Standard C Episode 8的相关文章

Standard C episode 1

计算机内存可以记录大量的信息,只有记录在内存中的信息才是可以使用的.计算机的内存管理者是操作系统.程序可以根据需要向操作系统申请存储区,所有存储区必须先申请并经过操作系统分配后才能由程序使用.我们知道计算机里的信息可以简单划分为: /指令       /控制信息 信息 -            \控制字       \数据信息                     |              /              \      数值信息     非数值信息       /    \ 

Standard C Episode 3

程序语言中的控制流语句用于控制各计算操作执行的次序.控制流结构有:(1)顺序结构(2)分支结构(3)循环结构 if...else语句是经典的分支结构控制语句,同样"switch (表达式)...case 常量表达式" 语句也可以实现分支处理."表达式"可以是任何表达式,"常量表达式"也可以是任何常量表达式.case分支一般包含多条语句时也不必用大括号括起来,因 为每一个case分支只会给出switch分支结构中语句执行的开始位置,而不确定终止位置

Standard C Episode 5

理解变量标识符的作用域和可见性,以及变量生存期. (1)标识符的作用域和可见性     作用域:作用域是一个标识符在源程序中有效的区域.     可见性:程序运行到某一点,能够引用到的标识符,就是该处可见的标识符. (2)变量生存期:     变量的生存期就是指变量从创建到销毁的时间范围.变量按照生存期分“静态生存期”和“动态生存期”.静态生存期:如果变量的生存期与程序的运行期相同,则称该变量具有“静态生存期”; 动态生存期:变量生存期始于创建声明点,结束于作用域结束处. 注意:源程序声明(定义

Standard C Episode 2

源程序中,但凡可以出现某种类型的数据的地方都可以用同类型的表达式替换.一个表达式的类型,取决于多个方面. 操作符有单目操作符和双目操作符, 还有三目操作符(? : 是C语言唯一的一个三目操作符)."目"指的是操作数的个数! C语言没有指定同一操作符的多个操作数的计算顺序(除了&& || ? : 和,).所以语句x = f() + g();的计算结果依赖不同的编译器. 1 /* 2 * 文件名: 3mu.c 3 * 描述:(1)一个表达式的类型取决于多个方面(表达式的操作

Standard C Episode 4

稍微简单的复杂数据类型:数组 计算机程序处理的对象是数据信息(计算机中的信息包括数据信息和控制信息),计算机内存可以存储大量信息,姑且可以认为只有存储在内存中的数据信息才是可 以使用的.内存由操作系统管理,程序要使用内存存储空间需要向操作系统申请并被成功分配后才可以使用,C语言提供的变量声明(定义)语句可以实现向操作系 统申请存储空间. C语言提供的变量声明(定义)语句实现向操作系统申请存储区(存储空间),变量名有"两个代表",一是代表所申请到的存储区,一是代表存储区里面存放的数 据信

Standard C Episode 6

字符串.字符串是以'\0'结尾的字符序列.C语言字符串在内存中的存储规则:按照串中字符出现的顺序在内存中连续存储,末尾是字符串结束符'\0'. 注:'\0'(查ASCII码表可知'\0'就是0)是表示字符串的字符,它的位置决定了一个字符串中有效字符的个数. 字符串常量.字符串常量在源程序词法记号中属于"文字",它和其他文字"数字.布尔文字.以及字符"一样.但区别是“字符串常量文字代表的是首字符地址”. 注:编译器编译时候会把源程序中重复出现的相同文字只存储一回.多个

Standard C Episode 9

typedef关键字可以给数据类型起别名. 结构体.结构体可以如下定义一个结构体变量 1 /* 2 * 结构体 3 * */ 4 #include <stdio.h> 5 /*struct { 6 int age; 7 char gender; 8 float height; 9 } student;//声明(定义)无名结构体的同时定义了结构体变量student 10 */ 11 /*struct student { 12 int age; 13 char gender; 14 float h

Standard C Episode 10

标准库函数malloc/calloc/realloc以及free的堆内存分配与回收 1 /* 2 * malloc练习 3 * 4 * */ 5 6 #include <stdlib.h> 7 #include <stdio.h> 8 9 int main() 10 { 11 int *p_value = NULL; 12 13 p_value = (int *) malloc (1 * sizeof(int)); 14 if (p_value) { 15 printf("

Standard C Episode 7

编译预处理 #define可以定义宏.宏可以带参数,叫做带参数的宏,其参数叫做宏的参数. #undef 可以解除宏的定义. 1 /* 2 宏练习 3 */ 4 5 #include <stdio.h> 6 #define NEG( r) r = 0 - r 7 8 main() 9 { 10 int value = 4; 11 NEG(value); 12 printf("value是%d\n", value); 13 } 1 /* 2 宏练习 3 */ 4 #includ