C语言学习7

上次分享到C语言的数组,这次从C语言的函数继续分享。

1.函数的概念

函数可以称为子程序,用来实现某个特定的任务的代码。

2.库函数

库函数:存放在函数库中的函数。像printf 、 scanf 都是库函数,使用库函数必须引用相应的头文件。
库函数相关头⽂件

#include <stdio.h>//头文件的引用
int main()
{
 printf("点赞");//库函数的使用
 return 0;
}

3.自定义函数

由程序员自己创建的函数。

函数返回类型 函数名(形式参数)
{
}

例子:

#include <stdio.h>
int Add(int x, int y)//x和y是函数形参
{
 int z = 0;
 z = x+y;
 return z;
}
int main()
{
 int a = 0;
 int b = 0;
 //输⼊
 scanf("%d %d", &a, &b);
 //调⽤加法函数,完成a和b的相加
 //求和的结果放在r中
 int r = Add(a, b);//a和b函数的实参
 //输出
 printf("%d\n", r);
 return 0;
}

形参和实参的区别:
1.形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。

3.实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。

4.函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

数组做函数参数:

void print_arr(int arr[], int sz)
{
 int i = 0;
 for(i=0; i<sz; i++)
 {
 printf("%d ", arr[i]);
 }
 printf("\n");
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr)/sizeof(arr[0]);
print_arr(arr, sz);
return 0}

1.函数的形式参数要和函数的实参个数匹配
2.函数的实参是数组,形参也是可以写成数组形式的
3.形参如果是⼀维数组,数组⼤⼩可以省略不写
4.形参如果是⼆维数组,⾏可以省略,但是列不能省略
5.数组传参,形参是不会创建新的数组的
6.形参操作的数组和实参的数组是同⼀个数组

4.函数的声明和定义

void print_arr(int arr[], int sz)//函数的定义
{
 int i = 0;
 for(i=0; i<sz; i++)
 {
 printf("%d ", arr[i]);
 }
 printf("\n");
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr)/sizeof(arr[0]);
print_arr(arr, sz);//函数的调用
return 0}

如果函数的定义在main函数后面:则必须在main函数前加声明,否则编译器会报错

void print_arr(int arr[], int sz)//函数的声明
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr)/sizeof(arr[0]);
print_arr(arr, sz);//函数的调用
return 0}
void print_arr(int arr[], int sz)//函数的定义
{
 int i = 0;
 for(i=0; i<sz; i++)
 {
 printf("%d ", arr[i]);
 }
 printf("\n");
}

注:函数的定义是特殊的声明

5.static和extern

static 是静态的的意思,可以⽤来:
1.修饰变量的时候,static 修饰的静态局部变量只执行初始化一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放
2.修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是 extern 外部声明也不可以。
3.修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。

extern 是⽤来声明外部符号的,如果⼀个全局的符号在A⽂件中定义的,在B⽂件中想使⽤,就可以使⽤exter 进⾏声明,然后使⽤。

这次就分享到这里了,感谢观看,有不足之处欢迎指正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值