C语言学习随笔-10 函数
函数是一组一起执行一个任务的语句。
函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。
C标准库提供了大量的程序可以调用的内置函数。
1、函数的定义
如:
int main() { return 0; }
int :返回值类型
main:函数名-->标识符,就是一个名字,想怎么起就怎么起
():描述参数
return 0:函数返回值
函数返回值类型 函数名(形参)
{
函数体;
return 返回值;
}
注意:- 函数的返回值类型必须和return后面的数据类型一致;
- 函数没有返回值是可以用void表示,如:int main(void){};
- return是结束当前函数;
2、函数声明:函数声明会告诉编译器函数名称及函数如何调用。函数的实际主体可以单独定义
函数声明包括以下几个部分:
return_type function_name(parameter list);
以下是函数声明:
int max(int num1,int num2);
在函数声明中,参数名称并不重要,只有参数类型是必需的,因此下面也是有效声明:
int max(int ,int);
3、函数的调用:函数名(函数参数)
注意:函数参数必须和定义时候的参数一致。
/* 函数声明 */ int max(int num1, int num2);
int main () { /* 局部变量定义 */ int a = 100; int b = 200; int ret; /* 调用函数来获取最大值 */ ret = max(a, b); printf( "Max value is : %d\n", ret ); return 0; } /* 函数返回两个数中较大的那个数 */ int max(int num1, int num2) { /* 局部变量声明 */ int result; if (num1 > num2) { result = num1 } else { result = num2 } return result; }
4、函数参数:如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。
函数参数:无论什么参数,都是以赋值的方式
两中传参方式:值传递、地址传递
形参:函数定义时候的参数;实参:函数调用时候的参数。
默认情况下,C使用值传递来传递参数,一般来说,这意味着函数内的代码不能改变用于调用函数的是参数
//函数返回两个数中较大的那个数 int max(int num1,int num2) //num1,num2为形参 { //声明局部变量 int result; if (num1 > num2) { return num1; } else { return num2; } return result; } int max2(int a,int b) { //int a = 1,int b = 2 return a > b ? a : b; } //每一个函数都有的独立一个运行空间(栈区) void modify(int a) //int a = aa 函数修改a的值,不影响main函数aa的值 { a = 1001; } void modifyPoint(int* a)//int *a = &aa { *a = 1001; }
当函数需要修改实参的时候,需要传入实参的地址
- 函数中修改普通变量,要传入普通变量的地址(一级指针),在函数中用的是:*指针
- 函数中修改一级指针,需要传入一级指针地址(二级指针),在函数中用的是:*指针
//数据结构:为什么要传入二级指针
int g_num = 1999; void Modify(int **p) { *p = &g_num; } int main() { //函数调用的时候,形参必须和实参类型一致 printf("%d\n",max2(1,2)); //实参 1 ,2 //值传递:修改函数内的形参不会影响实参 int aa = 999; modify(aa); printf("%d\n",aa); //地址传递:通过指针传递的方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行操作 modifyPoint(&aa); printf("%d\n",aa);
int* p = &aa;//一级指针 //*p 等效于 aa Modify(&p); printf("%d\n",*p); int a = 100; int b = 200; int ret; //调用函数 ret = max(a,b); printf("Max value is : %d\n",ret); return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)