初学者c语言函数大全,C语言入门教程-创建一个函数库

创建一个函数库

上述程序中的rand和bubble_sort函数很实用,很可能在您写其他程序时也能派上用场。为了能更方便地重复使用,您可以为它们创建一个实用工具函数库。

所有的函数库都包括两部分:头文件和源文件。头文件的标准扩展名是.h,它包含函数库的一些信息,使用这个库的程序需要知道这些信息。一般来说,头文件包括常数,类型声明以及该函数库所提供函数的原型声明。请将下面的头文件代码录入,以文件名util.h保存。

/* util.h */

extern int rand();

extern void bubble_sort(int, int []);

这两行是函数原型声明。C语言中用“extern”指明从外部链接的函数。使用旧式编译器时须将bubble_sort的参数列表清空。

然后录入下面的代码,以文件名util.c保存。

/* util.c */

#include "util.h"

int rand_seed=10;

/* 摘自 K&R- 产生一个0至32767之间的随机数。*/

int rand()

{

rand_seed = rand_seed * 1103515245 +12345;

return (unsigned int)(rand_seed / 65536) % 32768;

}

void bubble_sort(int m,int a[])

{int x,y,t; for (x=0; x < m-1; x++)

for (y=0; y < m-x-1; y++)

if (a[y] > a[y+1])

{t=a[y]; a[y]=a[y+1]; a[y+1]=t; } }

注意,本文件包含了自己的头文件(util.h)而且用的是引号而不是< >,因为尖括号只用于系统库。如您所见,这里的代码和普通C代码没什么区别。请注意,因为rand_seed变量没有在头文件中出现,所以对使用本库的程序来说是不可见的,也不能被修改。这就叫做信息隐藏。在int前面加上static关键字会强制信息被完全隐藏。

请录入下面的主函数,以文件名main.c保存。

#include #include "util.h"

#define MAX 10

int a[MAX];

void main()

{ int i,t,x,y; /* 填充数组元素 */

for (i=0; i < MAX; i++)

{a[i]=rand(); printf("%dn",a[i]);}

bubble_sort(MAX,a); /* 打印排序后的数组 */

printf("--------------------n"); for (i=0; i < MAX; i++)

printf("%dn",a[i]); }

这个程序包含了该实用工具函数库。使用函数库的主要好处是主程序的代码被大大精简了。

函数库的编译和运行

要编译函数库,请在命令行键入如下命令(假设您使用的是UNIX。若您的系统用的是cc则用cc替换gcc):

gcc -c -g util.c

-c选项使编译器为函数库生成一个的目标文件,它包含了函数库的二进制代码,独立存在于名为util.o的目标文件中。目标文件只有在和一个包含主函数的程序文件链接后才能执行。

要编译主程序,请键入:

gcc -c -g main.c

此命令将生成一个文件名为main.o的目标文件,它包含了主程序的二进制代码。要创建包含整个程序机器代码的可执行文件,请键入下面的命令将两个目标文件链接:

gcc -o main main.o util.o

这条命令将main.o和util.o进行链接并生成可执行程序main。键入main后即可运行。

用makefile可以在一定程度上简化函数库的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值