C语言 函数
函数是一组语句,它接受输入,进行一些操作,并产生结果。一个函数的操作只有在它被调用时才发生。我们可以调用函数,而不是为不同的输入反复编写相同的代码。函数接受参数,这些参数是数据。一个函数执行某种动作,它对重复使用代码很重要。在一个函数中,有一些用{}括起来的编程语句。
示例:
int sum(int a, int b);
函数声明
函数声明告诉编译器一个函数需要多少个参数,它返回什么类型的参数,以及它需要什么类型的数据。函数声明不需要包括参数名称,但定义必须包括。
语法:
return_type name_of_the_function (parameters);
两个数字之和的函数声明如下所示
int sum(int var1, int var2);
在声明函数时,参数名称不是强制性的。我们也可以不使用数据变量的名称来声明上述函数。
int sum(int, int);
函数定义
一个函数定义由函数头和函数体组成。
return_type function_name (parameters)
{
//body of the function
}
- Return_type。函数总是以函数的返回类型开始。但如果没有返回值,则使用void关键字作为该函数的返回类型。
- Function_Name:函数的名称,应该是唯一的。
- 参数。在函数调用过程中传递的值。
函数调用
调用一个函数时,参数与函数名一起传递。在下面的例子中,第一个和函数被调用,10,30被传递给和函数。调用函数后,a和b的总和被返回,控制权也被返回到程序的主函数。
函数的工作
// C program to show function
// call and definition
#include <stdio.h>
// Function that takes two parameters
// a and b as inputs and returns
// their sum
int sum(int a, int b)
{
return a + b;
}
// Driver code
int main()
{
// Calling sum function and
// storing its value in add variable
int add = sum(10, 30);
printf("Sum is: %d", add);
return 0;
}
输出
Sum is: 40
函数类型
C语言中的函数类型
1.用户定义的功能
由程序员创建的函数被称为用户定义的函数或 “定制的函数”。用户定义的函数可以根据程序员的需要进行改进和修改。每当我们写一个特定情况的函数,并且没有在任何头文件中定义,我们就需要根据语法声明和定义自己的函数。
用户定义函数的优点
- 可改变的功能可以根据需要进行修改。
- 这些函数的代码可以在其他程序中重复使用。
- 这些功能很容易理解、调试和维护。
示例:
// C program to show
// user-defined functions
#include <stdio.h>
int sum(int a, int b)
{
return a + b;
}
// Driver code
int main()
{
int a = 30, b = 40;
// function call
int res = sum(a, b);
printf("Sum is: %d", res);
return 0;
}
输出
Sum is: 70
2.库函数
一个库函数也被称为 “内置函数”。有一个已经存在的编译器包包含了这些函数,每个函数都有特定的含义,并被包含在包中。内置函数的优点是不需要定义就可以直接使用,而用户定义的函数在使用前必须进行声明和定义。
比如说。
pow(), sqrt(), strcmp(), strcpy() etc.
C库函数的优势
- C库函数易于使用,并为更好的性能进行了优化。
- C库函数节省了大量的时间,即函数开发时间。
- C库函数很方便,因为它们总是在工作。
示例:
// C program to implement
// the above approach
#include <math.h>
#include <stdio.h>
// Driver code
int main()
{
double Number;
Number = 49;
// Computing the square root with
// the help of predefined C
// library function
double squareRoot = sqrt(Number);
printf("The Square root of %.2lf = %.2lf",
Number, squareRoot);
return 0;
}
输出
The Square root of 49.00 = 7.00
向函数传递参数
当函数被调用时,被传递的值被称为实际参数。在下面的程序中,10和30被称为实际参数。
正规的参数 是函数声明中提到的变量和数据类型。在下面的程序中,a和b被称为形式参数。
1.传值: 这种方法中的参数传递将实际参数的值复制到函数的形式参数中。因此,函数内部的任何改变都不会反映在调用者的参数中。
下面是显示逐值传递的C程序。
// C program to show use
// of call by value
#include <stdio.h>
void swap(int var1, int var2)
{
int temp = var1;
var1 = var2;
var2 = temp;
}
// Driver code
int main()
{
int var1 = 3, var2 = 2;
printf("Before swap Value of var1 and var2 is: %d, %d\n",
var1, var2);
swap(var1, var2);
printf("After swap Value of var1 and var2 is: %d, %d",
var1, var2);
return 0;
}
输出
Before swap Value of var1 and var2 is: 3, 2
After swap Value of var1 and var2 is: 3, 2
2.传引用: 调用者的实际参数和函数的实际参数指的是相同的位置,所以在函数内部的任何改变都会反映在调用者的实际参数中。
下面是显示逐一参考的C程序。
// C program to show use of
// call by Reference
#include <stdio.h>
void swap(int *var1, int *var2)
{
int temp = *var1;
*var1 = *var2;
*var2 = temp;
}
// Driver code
int main()
{
int var1 = 3, var2 = 2;
printf("Before swap Value of var1 and var2 is: %d, %d\n",
var1, var2);
swap(&var1, &var2);
printf("After swap Value of var1 and var2 is: %d, %d",
var1, var2);
return 0;
}
输出
Before swap Value of var1 and var2 is: 3, 2
After swap Value of var1 and var2 is: 2, 3
函数参数和返回值
在C语言编程中,函数可以在有参数或无参数的情况下被调用,并可能返回值。它们可能会也可能不会向调用函数返回值。