学过C语言的同学想必都明白函数的重要性吧,函数能够帮助我们更快地去解决程序上的问题,去实现程序。
那么C语言函数又包括哪两种呢?
C语言中函数的分类:
- 库函数
2.自定义函数
那么我,我们怎么去学习库函数呢,这里我们可以借助一个网站http://www.cplusplus.com/reference/来学习库函数。
让我们点开头文件string.h的文件,找到strcpy函数。
这里就是拷贝函数,我们可以看到这个函数返回的char*类型的数据,括号里前面一个是目的地,就是你想把内容拷贝到哪个数组的对象,后面这个就是被拷贝的对象。
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[20];
char arr2[] = "abcdef";
strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
这里我们就很容易的看到arr2数组中的字符拷贝到了arr1数组中。
所以当我们想要利用库函数的时候就可以利用这个网站来查找你想用的库函数。这对于我们这种初学者来说还是非常方便的。
接下来就让我们来看看自定义函数是怎么操作的吧。
自定义函数和库函数一样,有函数名,返回值类型和函数参数。
但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。
我们来举个简单的例子帮助大家更好的理解自定义函数。
写一个函数可以找出两个整数中的最大值。
#include <stdio.h>
//get_max函数的设计
int get_max(int x, int y)
{
return (x>y)?(x):(y);
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = get_max(num1, num2);
printf("max = %d\n", max);
return 0;
}
我们看到这个我们自定义的函数帮助我们找出了两个数中的最大值,看到主函数中的get_max函数我们实际上是把num1和num2的值通过数值传参到函数,让函数中找到最大值,在通过return返回打印出来。
函数的参数分为实参和形参,真实传给函数的参数,叫实参(常量、变量、表达式、函数等),形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。
void Swap1(int x, int y)
{
int z = 0;
z = x;
x = y;
y = z;
}
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d %d", &num1, &num2);
printf("交换前:num1 = %d num2 = %d\n", num1, num2);
//实际参数
Swap1(num1, num2);
//函数调用的时候,将实参传递给形参
//形参其实是实参的一份临时拷贝
//对形参的修改,不会改变实参
printf("交换后:num1 = %d num2 = %d\n", num1, num2);
return 0;
}
从这里我们看到num1,num2,与x,y的地址相同,而它们不处于同一空间所以我们可以简单的认为:形参实例化之后其实相当于实参的一份临时拷贝。
函数的调用分为传值调用和传址调用。
传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操
作函数外部的变量。
这就是C语言有关于函数的内容,今天的分享就到这里,谢谢大家。