在本教程中,将向您介绍C语言编程中的函数(用户定义函数和标准库函数)。此外,您还将学习为什么在编程中使用函数。
假设您需要创建程序来创建一个圆并为其着色。您可以创建两个函数来解决此问题:
创建一个圆的函数
创建颜色的函数
将复杂的问题分成较小的块可以使我们的程序易于理解和重用。
C函数具有以下优点。
通过使用函数,我们可以避免在程序中一次又一次地重写相同的逻辑/代码。
我们可以在程序中以及在程序的任何位置多次调用C函数。
当大型C程序被划分为多个函数时,我们可以轻松地对其进行跟踪。
可重用性是C函数的主要成就。
但是,函数调用始终是C程序的开销。
C函数包含三个方面。
函数声明 必须在C程序中全局声明函数,以告知编译器函数名称,函数参数和返回类型。
函数调用 可以从程序中的任何位置调用函数。参数列表在函数调用和函数声明中要相同。我们必须传递与函数声明中声明的函数数量相同的函数。
函数定义 它包含要执行的实际语句。这是调用函数时控件所涉及的最重要方面。在这里,我们必须注意,该函数只能返回一个值。
序号 | C函数方面 | 语法 |
---|---|---|
1 | 函数声明 | return_type function_name(argument_list); |
2 | 函数调用 | function_name(argument_list) |
3 | 函数定义 | return_type function_name(argument_list){function body;} |
使用C语言创建函数的语法如下:
return_type function_name(data_type parameter...){ //要执行的代码 }
C语言编程中有两种类型的函数:
标准库函数:在C头文件中声明的函数,例如scanf(),printf(),gets(),puts(),ceil(),floor()等。
用户定义的函数:C程序员自定义的函数,我们可以多次使用它。它降低了大型程序的复杂性并优化了代码。
C函数可能会也可能不会从该函数返回值。如果您不必从函数返回任何值,则将void用作返回类型。
让我们看一个简单的C函数示例,该函数不会从该函数返回任何值。
没有返回值的示例:
void hello(){ printf("hello c"); }
如果要从函数返回任何值,则需要使用任何数据类型,例如int,long,char等。返回类型取决于要从函数返回的值。
让我们看一个简单的C函数示例,该函数从该函数返回int值。
返回值示例:
int get(){ return 10; }
在上面的示例中,我们必须返回10作为值,因此返回类型为int。如果要返回浮点值(例如10.2、3.1、54.5等),则需要使用float作为方法的返回类型。
float get(){ return 10.2; }
现在,您需要调用该函数以获取该函数的值。
函数可以接受也可以不接受任何参数。它可能会或可能不会返回任何值。基于这些事实,函数调用有四个不同方面。
没有参数且没有返回值的函数
没有参数但有返回值的函数
有参数且无返回值的函数
带有参数和返回值的函数
实例1
#include<stdio.h> void printName(); void main () { printf("Hello "); printName(); } void printName() { printf("www.thinktus.com"); }
输出结果
Hello www.thinktus.com
实例2
#include<stdio.h> void sum(); void main() { printf("\n计算两个数的和:"); sum(); } void sum() { int a,b; printf("\n输入两个数字"); scanf("%d %d",&a,&b); printf("总和是 %d",a+b); }
输出结果
计算两个数的和: 输入两个数字 10 24 总和是 34
实例1
#include<stdio.h> int sum(); void main() { int result; printf("\n计算两个数的和:"); result = sum(); printf("%d",result); } int sum() { int a,b; printf("\n输入两个数字"); scanf("%d %d",&a,&b); return a+b; }
输出结果
计算两个数的和: 输入两个数字 10 24 34
示例2:程序计算正方形的面积
#include<stdio.h> int sum(); void main() { printf("计算这个正方形的面积\n"); float area = square(); printf("正方形的面积: %f\n",area); } int square() { float side; printf("输入边长(以米为单位): "); scanf("%f",&side); return side * side; }
输出结果
计算这个正方形的面积 正方形的面积: 10 输入边长(以米为单位): 100.000000
实例1
#include<stdio.h> void sum(int, int); void main() { int a,b,result; printf("\n计算两个数的和:"); printf("\n输入两个数字:"); scanf("%d %d",&a,&b); sum(a,b); } void sum(int a, int b) { printf("\n总和是 %d",a+b); }
输出结果
计算两个数的和: 输入两个数字 10 24 总和是 34
示例2:程序计算五个数字的平均值。
#include<stdio.h> void average(int, int, int, int, int); void main() { int a,b,c,d,e; printf("\n要计算五个数的平均值:"); printf("\n输入五个数字:"); scanf("%d %d %d %d %d",&a,&b,&c,&d,&e); average(a,b,c,d,e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf("给定五个数字的平均值 : %f",avg); }
输出结果
要计算五个数的平均值: 输入五个数字:10 20 30 40 50 给定五个数字的平均值 : 30.000000
实例1
#include<stdio.h> int sum(int, int); void main() { int a,b,result; printf("\n计算两个数的和:"); printf("\n输入两个数字:"); scanf("%d %d",&a,&b); result = sum(a,b); printf("\n总和是 : %d",result); } int sum(int a, int b) { return a+b; }
输出结果
计算两个数的和: 输入两个数字:10 20 总和是 : 30
示例2:检查数字是偶数还是奇数的程序
#include<stdio.h> int even_odd(int); void main() { int n,flag=0; printf("\n检查一个数字是偶数还是奇数"); printf("\n输入数字: "); scanf("%d",&n); flag = even_odd(n); if(flag == 0) { printf("\n数字是奇数"); } else { printf("\n这个数是偶数"); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } }
输出结果
检查一个数字是偶数还是奇数 输入数字: 100 这个数是偶数
标准库函数是C语言中的内置函数,它们被分组并放置在称为库的公共位置。这些函数用于执行某些特定操作。例如,printf是用于在控制台上打印的库函数。库函数由编译器的设计者创建。所有C标准库函数都在扩展名为.h的不同头文件中定义。我们需要在程序中包含这些头文件,以利用在此类头文件中定义的库函数。例如,要使用诸如printf / scanf之类的库函数,我们需要在程序中包含stdio.h,这是一个头文件,其中包含有关标准输入/输出的所有库函数。
下表列出了最常用的头文件。
序号 | 头文件 | 描述 |
---|---|---|
1 | stdio.h | 这是一个标准的输入/输出头文件。它包含有关标准输入/输出的所有库函数。 |
2 | conio.h | 这是一个控制台输入/输出头文件。 |
3 | string.h | 它包含所有与字符串相关的库函数,例如gets(),puts()等。 |
4 | stdlib.h | 该头文件包含所有通用库函数,例如malloc(),calloc(),exit()等。 |
5 | math.h | 该头文件包含所有与数学运算相关的函数,例如sqrt(),pow()等。 |
6 | time.h | 该头文件包含所有与时间有关的函数。 |
7 | ctype.h | 该头文件包含所有字符处理函数。 |
8 | stdarg.h | 变量参数函数在此头文件中定义。 |
9 | signal.h | 所有信号处理函数都在此头文件中定义。 |
10 | setjmp.h | 该文件包含所有跳转函数。 |
11 | locale.h | 该文件包含语言环境函数。 |
12 | errno.h | 该文件包含错误处理函数。 |
13 | assert.h | 该文件包含诊断函数。 |
访问这些页面以了解更多信息: