这篇文章理论性知识比较多,不过对于初学者对于函数的理解会有更深层次的帮助
目录
c语言的函数——子程序
自定义函数
c语言的函数——子程序
*是大型程序中的某部分代码,由一个或者多个语句组成,她负责完成某项特定的任务,相较于其他代码,具备相对的独立性
*一般有输入参数和返回值
C语言中函数的分类:1、库函数,2、自定义函数
那么为什么要使用函数?主要是为了让你省去编写重复代码的苦差 这样当有人想在电脑上实现某些功能的时候就可以进行使用
但是久而久之,C语言为了提高执行效率和可移植性,他将这些需要经常使用的代码封装进入了库函数
例如stdio.h就是c语言中的一个标准库函数
这里的话我提供几个库函数的网站,可供大家学习cplusplus.
因为是国外的网站,大家如果需要查找一些函数的话有可能需要改IP地址,并且这个网站是全英文,对英文不好的小伙伴可能有些不太友好,这里大家只能不断的查询自己不认识的单词了
或者大家也可以百度MSDN
看了这些英文是不是觉得有一些头大,所以英文再差,至少也需要看懂这些
对于英语比较差的人这里我也提供一个中文网站,但是希望大家也要掌握阅读英语文献的能力中文c语言函数查询网站
总结一下,c语言的库函数有:
*I/O函数 printf scanf getchar
*字符串操作函数 strlen strcat
*字符操作函数 toupper
*内存操作函数 memcpy memcmp memset
*时间/日期函数 time
*数学函数 sqrt pow
*其他库函数
这些都是一系列的库函数
自定义函数
但是库函数也不是万能的,如果库函数能把所有的事情都昨完的话那么就不需要程序员了
所以自定义函数才是重中之重
自定义函数与库函数十分相似,有返回值,函数类型和函数参数。
首先我们应当知道函数的组成,这里我先简单写一段代码让大家了解一下
#define _CRT_SECURE_NO_WARNINGS 1//取消警告
void num(int a);
int main() {num(2);return 0;
}
void num(int a) {for (int i = a; i < 10; i++) {printf("%d", i);}
}
打印2到9的一个函数
这个void就是函数的返回值,void 就是无返回值
num是函数名
Int a 是函数参数(形参)
这一段用大括号括起来的这一段为函数体
这段代码前面
叫做函数的声明,声明是告诉编译器,有这样的num的一个函数,这个函数叫做mun并且参数是Int型
当然,你也可以这样写
这样写函数的原因是因为通常在看程序中,一般是先看main函数,再看其他的子函数,所以我们为了让看你程序的人更轻松的看懂,可以把main函数放在最前面。这算是一种代码风格,希望大家能这样书写函数。函数名也要起的有意义,这样看你函数的人一看就知道你这个函数是实现了什么。
这里我写一个实例来让大家更好的理解函数
#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
int GetMax(int,int);
int main() {int max;max = GetMax(10, 20);printf("%d", max);return 0;
}
int GetMax(int a, int b) {if (a > b) {return a;}else {return b;}
}
这是一个判断两个数中较大值的一个函数,大家可以清楚的看到这个函数的返回值是不确定的,可能是a,也有可能是b,把这个值赋给main函数中的max,并且输出出来
这个函数还算比较简单,一般别人一看就能看得出来,以后写一些复杂函数就不方便让人理解了,在这里我希望大家能做到函数具备单一出口(单一出口原则——函数只返回一个变量或者值),这样其他程序员在修改你的程序员在修改你的程序时会方便很多,并不是说是这段代码时错的,但是这样写确实是不好的。
因此这个函数应该这样写
#define _CRT_SECURE_NO_WARNINGS 1//取消警告
#include<stdio.h>
int GetMax(int,int);
int main() {int max;max = GetMax(10, 20);printf("%d", max);return 0;
}
int GetMax(int a, int b) {int MAX;if (a > b) {MAX =a;}else {MAX =b;}return MAX;
}
这样写会多增加一些变量,但是却人其他人更加容易读懂你的程序
这里可能会有些好奇的小伙伴想知道如何在一个函数中返回两个参数,在这里先卖个关子(给作者自己挖个坑,以后来填坑),c语言提供了一些其他的办法解决——指针
本文链接:https://my.lmcjl.com/post/2666.html
4 评论