【九月打卡】第16天【养成记】嵌入式挑战第16天,C语言中的函数:函数传参地址的地址传递
2022/9/23 3:17:18
本文主要是介绍【九月打卡】第16天【养成记】嵌入式挑战第16天,C语言中的函数:函数传参地址的地址传递,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程章节:
课程名称:物联网/嵌入式工程师
章节名称:第4周之第四讲 1-11 至 1-12 C语言中的函数:函数传参地址的地址传递
讲师姓名:大白老师
课程内容:
C语言中的函数:函数传参地址的地址传递
C语言的函数传参
普通变量地址的传递
- 功能:
我们在使用函数传参的时候,除了传递普通的变量外,在某些时刻不得不传递变量的地址。 传递变量的地址,我们在使用的时候,就只能通过指针来接收了。 - 好处:
传递变量的地址,通过指针接收,可用通过指针修改原变量的值。
代码示例
#include <stdio.h> /* //int x = a; //int y = b; void change_value(int x,int y) { int t = 0; t = x; x = y; y = t; return ; } */ // 传参的本质:变量之间的赋值操作 // int *x = &a; // int *y = &b; // 优点:传递变量的地址,定义指针接收,可以通过指针修改原来变量的值. void change_value(int *x,int *y) { // printf("*x = %d *y = %d\n",*x,*y); // // *x = 222; // *y = 777; int t; t = *x; *x = *y; *y = t; return ; } // 功能:求a 和 b的和与差,并要求在主函数打印 // 逆向传参:把函数内部获得数据,逆向传递给调用者。 // 需要传递指针才能实现其操作. // // int x = a; // int y = b; // int *m = &ret1; // m <===>&ret1 *m <===>ret1 // int *n = &ret2; void do_calc(const int x,const int y,int *m,int *n) { int sum1 = 0,sum2 = 0; sum1 = x + y; sum2 = x - y; *m = sum1; *n = sum2; return ; } int main() { int a = 0,b = 0; int ret1 = 0,ret2 = 0; int t = 0; printf("please input two data : "); scanf("%d%d",&a,&b); // printf("1.a = %d b = %d\n",a,b); // change_value(&a,&b); // printf("2.a = %d b = %d\n",a,b); do_calc(a,b,&ret1,&ret2); printf("a + b = %d\n",ret1); printf("a - b = %d\n",ret2); return 0; }
执行结果:
课后任务
练习
1.main()函数定义4个变量,int a,b,max_value,sum.要求用户从键盘输入2个数据赋值给a和b 2.设计一个叫做calc_data()函数,自定义返回值和参数, 要求该函数中求出a和b中的最大值,函数调用结束后, 要求给main函数max_value存储的是两个数中较大的值。 在求两个数的和,要求给main函数sum存储的两个数据的和。 3.在main函数中打印max_value和sum的值。
代码
#include <stdio.h> void calc_data(const int a,const int b, int *max, int *sum) { *max = a > b ? a : b; *sum = a + b; return; } int main() { int a, b, max_value, sum; printf("请输入2个数据:\n"); scanf("%d%d", &a, &b); calc_data(a, b, &max_value, &sum); printf("a = %d\n", a); printf("b = %d\n", b); printf("max_value = %d\n", max_value); printf("sum = %d\n", sum); return 0; }
执行结果:
学习笔记:
课后任务
练习
1.main()函数定义4个变量,int a,b,max_value,sum.要求用户从键盘输入2个数据赋值给a和b 2.设计一个叫做calc_data()函数,自定义返回值和参数, 要求该函数中求出a和b中的最大值,函数调用结束后, 要求给main函数max_value存储的是两个数中较大的值。 在求两个数的和,要求给main函数sum存储的两个数据的和。 3.在main函数中打印max_value和sum的值。
代码
#include <stdio.h> void calc_data(const int a,const int b, int *max, int *sum) { *max = a > b ? a : b; *sum = a + b; return; } int main() { int a, b, max_value, sum; printf("请输入2个数据:\n"); scanf("%d%d", &a, &b); calc_data(a, b, &max_value, &sum); printf("a = %d\n", a); printf("b = %d\n", b); printf("max_value = %d\n", max_value); printf("sum = %d\n", sum); return 0; }
执行结果:
课程评价:
这节课没学懂,需要反复观看和理解,某些时刻下需要传递地址给到对应函数。
这篇关于【九月打卡】第16天【养成记】嵌入式挑战第16天,C语言中的函数:函数传参地址的地址传递的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升