C语言函数
Posted fengzi759
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言函数相关的知识,希望对你有一定的参考价值。
-
函数的概念
-
函数是c语言的功能单位,实现一个功能可以封装某一个函数来实现
-
定义函数的时候一切以功能为目的,根据功能去定函数的参数和返回值
-
-
函数的分类
-
从定义角度分类(即函数是谁实现的)
-
库函数(c库实现的)
-
自定义函数(程序员自己实现的函数)
-
系统调用(操作系统实现的函数)
-
-
从参数角度分类
-
有参函数
-
函数有形参,可以是一个,或者多个,参数的类型随便
-
完全取决于函数的功能
-
int fun (int a,float b,double c)
-
-
-
int max(int x,int y)
-
-
-
-
无参函数
-
函数没有参数,在形参列表的位置写个void 或什么都不写
-
int fun (void)
-
-
-
int fun()
-
-
-
-
-
从返回值角度分类
-
有返回值的函数
-
在定义函数的时候,必须带着返回值类型,在函数体里,必须有return
-
如果没有返回值类型,默认返回整型
-
char fun()// 定义一个返回字符数据的函数
-
-
char b = ‘a’;
-
return b ;
-
-
fun ()
-
-
return 1;
-
如果把函数的返回值类型省略了,默认返回整型
-
注意:在定义函数的时候,函数的返回值类型,到底是什么类型的,取决于函数的功能
-
-
没返回值的函数
-
在定义函数的时候,函数名字前面加void
-
void fun(形参表)
-
-
-
在函数里不需要 return
-
如果想结束函数,返回到被调用的地方,return;什么都不返回就可以了
-
-
-
-
函数的定义
-
函数的定义是 即函数的实现
-
函数的定义方法
-
返回值类型 函数名字(形参列表)
-
-
//函数体,函数的功能在函数体里实现;
-
-
注意: 函数必须带类型,而且以逗号隔开
-
函数的定义不能嵌套,即不能再一个函数体内定义另外一个函数。 所有的函数都是平行结构
-
再一个程序中,函数只能定义一次,也就是不能出现函数重名的现象
-
-
-
函数的声明
-
概念
-
对已经定义的函数,进行说明
-
函数的声明可以声明多次。
-
-
为什么要声明
-
有些情况下。如果不对函数进行声明,编译器再编译的时候,可能不认识这个函数。
-
因为编译器再编译的c程序的时候,从上往下编译的
-
-
声明的方法
-
什么时候需要声明
-
主调函数和被调函数再同一个.c文件中的时候
-
被调函数再上,主调函数在下 这时候就不需要声明
-
被调函数在下,主调函数在上,这时候就需要在主调函数中声明被调函数;
-
-
-
直接声明法
-
将被调函数的第一行拷贝过去,后面加分号
-
举例
-
void fun(void);
-
int main()
-
-
fun();
-
-
void fun (void)
-
-
printf("hello world\n");
-
-
-
-
间接声明法
-
将函数的声明放在头文件中,.c程序包含头文件即可
-
举例
-
在a.c文件中编译这个
-
#include " a.h"
-
int main()
-
-
fun();
-
-
void fun(void)
-
-
printf("hello world\n");
-
-
在a.h文件中编译这个
-
extern void fun(void)
-
-
-
-
主调函数和被调函数不在同一个.c文件中的时候
-
一定要声明
-
声明的方法
-
直接声明法
-
将被调用的函数的第一行拷贝过去,后面加分号,前面加extern
-
-
间接声明法
-
将函数的声明放在头文件中,.c程序包含头文件即可
-
-
-
-
注意头文件 后缀为.h文件
-
-
函数的调用
-
函数的调用方法
-
变量 = 函数名(实参列表);//函数带返回值的前提下
-
函数名(实参列表);//不带返回值 的
-
-
有返回值的,根据返回值的类型,需要在主调函数中定义一个对应类型的变量接受返回值
-
举例
-
int max(int x,int y)// x,y是形参 是个变量
-
-
-
int main()
-
-
int num;//需要定义一个num 接收max函数 的返回值
-
num = max(4,8);//4和8就是实参
-
-
-
-
没有返回值的函数,不需要接受返回值
-
举例
-
void fun(void)
-
-
printf("hello world\n");
-
-
int main ()
-
-
fun();
-
-
-
有无形参
-
函数名(实参列表);//带形参的函数 需要传实参
-
函数名();//没有形参的 可以直接调用
-
注意:实参可以是常量,可以是变量,或者是表达式
-
形参是变量,是被调函数的局部变量
-
-
-
函数的总结
-
定义函数的时候,关于函数的参数和返回值是什么情况,完全取决于函数的功能
-
使用函数的好处
-
定义一次,可以多次调用,减少代码的冗余度
-
使咱们代码,模块化更好,方便调式程序,而且阅读方便
-
-
-
-
打字游戏思路
-
随机函数
-
srand((unsigned)time(NULL)); 以当前时间为种子,设置随机种子
-
ch = rand()
-
注意: rand()函数,每调用一次,产生一个随机数字
-
rand()%26 产生0~25中随机数 rand()%26+‘a‘ 随机产生一个字母
-
-
-
linux 获得键值函数
-
ch = mygetch();//无需按下回车,可直接获得键盘上按下的键值
-
-
时间函数
-
start_time = time(NULL);
-
end_time = time(NULL);
-
//可以返回系统当前时间,以秒为单位
-
-
window下
-
头文件需要 #include< conio.h >
-
ch = getch();
-
-
linux
-
system("clear");//清空屏幕
-
-
windows
-
#include< windows.h >
-
system("cls");//清空屏幕
-
-
c语言获取程序运行时间
-
所需头文件 time.h
-
所需函数clock
-
函数介绍
-
用于获取程序启动时间到这次调用clock函数的CPU占用时间
-
用于衡量秒的单位,1000也就是千分之一秒,也就是当过了一毫秒clock会自动增加1,着也是为什么在计算完之后要除以1000,换算成毫秒
-
用法 先定义两个 clock_t start,finish; 变量,用于存取开始的时间和结束的时间
-
在定义一个 double time; //用于存储程序执行的时间
-
你想知道程序哪个部分运行的时间
-
在这个程序的首行写 start = clock(); 获取程序启动的时间
-
在这个程序的尾行写 finish = clock();获取程序结束的时间
-
时间差 time = (double)(finish-start)/CLOCK_PER_SEC //获取程序执行的时间
-
clock会把这个值并根据宏定义的CLOCKS_PER_SEC 来进行毫秒单位转换,假如clock_t是1000,那么CLOCK_PER_SEC也是1000,clock就会返回给你1毫秒
-
因为 clock_t是长整型long,返回的是整型,所以我们需要进行强制类型转换
-
-
-
-
exit(0) 正常退出程序 exit(1)和exit(-1) 异常退出程序
-
以上是关于C语言函数的主要内容,如果未能解决你的问题,请参考以下文章