博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言编程0基础学习历程(7)——C的函数
阅读量:3950 次
发布时间:2019-05-24

本文共 1447 字,大约阅读时间需要 4 分钟。

C语言编程0基础学习历程(7)——C的函数

目录

前言

   如果让你在没有任何工具和材料的情况下独自造一间屋子,你能做到么?估计大多数人的回答是,不能。常言道,“巧妇难为无米之炊”。没有任何工具和材料,又怎么能够打造出一件优秀的作品呢?

   写程序也同样如此,一个好的工程师也大多拥有一套好的工具和材料,程序工程师的工具和材料便是——函数。确实,有点令人惊讶,程序工程师的工具和材料都叫做一个名字,但请你仔细想一想,我们身边的锤子、轮子又是由什么构成的呢?答案是材料,可以说,工具是一个材料经过精心设计加工后的集合体。所以,请原谅我在下文中将工具和材料混为一谈,希望不会增加您的困扰。
   C自带了一个包含函数的大型库,但笔者认为,编程最快乐的地方,不是用别人的工具完成任务,而是自己创造工具,在这个过程中,才能最体现我们的才思,体现我们的创造力,把自己的成果展示给他人,将是一件多么有意思的事情。

基础知识

   想要创造出一个好的函数,首先要了解函数的基本规则,就像创造工具首先要了解工具的组成结构。创建自己的函数时,首先要处理三个方面:定义,原型和调用。

1、定义函数

   函数可以分为两类,有返回值的和没有返回值的函数。没有返回值的函数不需要返回值,但需要返回控制权。有返回值的函数一定要返回值和控制权。

   无返回值的函数称为void函数,其通用格式如下:

/*void 函数名(参数列表){	函数说明	return;}*/void funcationName(parameterList){
statements return ;}//例:void cheers(int n){
int i; for(i=0;i

   有返回值的函数通用格式如下:

/*返回值类型 函数名(参数列表){	函数说明	return 返回值;}*/typeName funcationName(parameterList){
statements return value;}//例:int bigger(int a,int b){
if(a>b) return a; else return b;}

2、函数原型

   C语言规定在定义一个函数以前必须先声明其函数原型,原型描述了函数到编译器的接口,也就是说,它将函数返回值类型以及参数的类型和数量告诉编译器。例如上面两个函数的原型分别为:

void cheers(int n);int bigger(int a,int b);

   原型的功能主要有三点:

      1. 保证编译器正确处理函数返回值。
      2. 保证编译器检查使用的参数数目正确。
      3. 保证编译器检查使用的参数类型正确。
      (不正确则在可能的情况下转化为正确的类型)

3、函数调用

   在主函数中对函数进行传参即可完成调用。例:

int main(){
cheers(5); int big=bigger(2,3); return 0;}

   一般情况下,大家看到这就会一脸迷茫。这是个啥?其实理解起来很简单。函数原型就好比是函数的名称,在使用之前,你需要告诉编译器这个函数叫什么,这样才方便编译器找到他;而定义则是说明这个函数的作用;调用就更有意思了,你只要将你想改造的原料放入函数的投料口,结果自然就会从函数的出料口出来了。需要注意的是,虽然我们可以放入多种原料,但成品只能有一种。

转载地址:http://mcuzi.baihongyu.com/

你可能感兴趣的文章
adb 协议
查看>>
Android Debug Bridge 服务详解
查看>>
linux access函数判断文件存取权限
查看>>
epoll使用
查看>>
C语言的常用类型转换函数(atoi,atol,strtod,strtol,strtoul)
查看>>
C语言宏定义##连接符和#符的使用
查看>>
对FrameBuffer的一夜hack
查看>>
Linux framebuffer ---double buffer
查看>>
android电源管理
查看>>
Android电源管理相关应用技巧分享
查看>>
Linux关机重启流程分析
查看>>
MOS管及MOS管的驱动电路设计
查看>>
ARM中的程序状态寄存器(CPSR)
查看>>
关于c语言的sizeof
查看>>
2440init.s文件分析
查看>>
ADS ARM Assembler内置变量
查看>>
linux设备模型中ktype的用法
查看>>
Linux内核Ramdisk(initrd)机制
查看>>
Linux2.6 内核的 Initrd 机制解析
查看>>
解析linux根文件系统的挂载过程
查看>>