课程名称:物联网/嵌入式工程师
章节名称:第4周之第四讲 1-11 至 1-12 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; }
执行结果:
这节课没学懂,需要反复观看和理解,某些时刻下需要传递地址给到对应函数。