C语言自定义函数
C语言一共只有32个关键字,9种控制语句,程序书写自由。那么大家知道C语言自定义函数是什么呢?下面一起来看看!
函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。
无参函数的定义
如果函数不接收用户传递的数据,那么定义时可以不带参数。如下所示:
返回值类型 函数名(){
函数体
}
说明:
返回值类型可以是C语言中的任意数据类型,例如 int、float、char 等。
函数名是标识符的一种,命名规则和标识符相同。函数名后面的括号( )不能少。
函数体是函数需要执行的代码。即使只有一个语句,也要由{ }包围。
在函数体中使用return语句返回数据。
例如,定义一个函数,计算1加到100的结果:
int sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum;}
计算结果保存在变量sum中,通过return语句返回。sum为int型,所以返回值类型也必须为int,要一一对应。
return是C语言中的一个关键字,只能用在函数中,用来返回处理结果。
将上面的代码补充完整:
#includeint sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum;}int main(){ int a = sum(); printf("The sum is %d", a); return 0;}
运行结果:
The sum is 5050
函数不能嵌套定义,main 也是一个函数定义,要将 sum 放在 main 外面。函数必须先定义后使用,所以 sum 只能在 main 前面。
注意:main 是函数定义,不是函数调用。当可执行文件加载到内存后,系统从 main 函数开始执行,也就是说,系统会调用我们定义的 main 函数。
无返回值函数
有的函数不需要有返回值,或者返回值类型不确定(很少见),那么用void表示,例如:
void hello(){ printf ("Hello,world"); //没有返回值就不需要 return 语句}
void是C语言中的一个关键字,表示空类型或无类型,绝大部分情况下也就意味着没有 return 语句。
有参函数的定义
如果函数需要接收用户传递的数据,那么定义时就要带参数。如下所示:
返回值类型 函数名(参数列表){
函数体
}
用户数据通过“参数列表”传递给函数,供函数处理。例如,定义一个函数求两个数中的`最大值:
int max(int a, int b){ if (a>b){ return a; }else{ return b; }}
参数(Parameter)本质上也是变量,定义时要指明参数类型和参数名称。参数列表中可以定义一个或多个参数,多个参数之间用逗号,分隔。参数列表中给出的参数可以在函数体中使用。
调用 max() 函数时可以直接传递整数:
int n = max(10, 20);
也可以传递变量:
int a = 10, b = 20;
int n = max(a, b);
也可以整数和变量一起传递:
int a = 10;
int n = max(a, 20);
变量 n 得到的值都是20。
函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数(传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。注意:实参和形参的类型、数目必须一致。
将上面的代码补充完整:
#includeint max(int a, int b){ if (a>b){ return a; }else{ return b; }}int main(){ int num1, num2, maxVal; printf("Input two numbers: "); scanf("%d %d", &num1, &num2); maxVal = max(num1, num2); printf("The max number: %d", maxVal); return 0;}
运行结果:
Input two numbers: 100 200
The max number: 200
定义max时,变量a、b的值都是未知的;调用max时,分别将num1、num2的值传递给a、b,类似于:
a=num1;
b=num2;
return 语句可以有多个,可以在函数体的任意位置。在max中,根据 if 的判断结果来执行不同的 return 语句。
函数一旦遇到 return 语句就返回(停止执行),后面的所有语句都不会被执行到,例如:
int max(int a, int b){ int n = (a>b) ? a : b; return n; printf("Function is performed");}
第4行代码是多余的,永远没有执行的机会。
-
2017上半年计算机二级C语言考前模拟试题
为了帮助大家提高计算机考试成绩,今天本站小编特地为大家收集了以下2017上半年计算机二级C语言考前模拟试题,欢迎学习!一、程序填空题给定程序中,函数fun的功能是:把形参S所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度...
-
C,C++,C#三者的阐述和区别
一、关于C语言C语言是一种结构化编程语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言的表现能力和处理能力极...
-
C函数的调用过程
在C代码中通过asm或__asm__嵌入一些汇编代码,如进行系统调用,使用寄存器以提高性能能,需要对函数调用过程中的堆栈帧(StackFrame)、CPU寄存器、GCCinlieassembly等了如指掌。现在看看函数调用过程吧。C函数的调用过程1.Linux进程虚拟地址空间以32位操作系统为例,下面...
-
C语言中gets()函数知识
导语:gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。。下面是C语言中gets()函数知识,一起来学习下吧:gets()函数用于从缓冲区中读取字符串,其原型如下:char*gets(cha...