资源简介 (共14张PPT)C 语言程序设计2023翻转课堂实用教程9.2 指针与函数123指针变量作为函数参数数组名作为函数参数知识点指针与函数案例分析案例分析指针与函数相关练习题练习题指针变量作为函数的参数时:将函数外部某些变量的地址传递到函数内部,在函数内部通过这些外部变量的地址操作这些外部变量。1.指针变量作为函数的参数9.2.1 指针与函数知识点案例9.2.1 编写calculate函数来计算两个double类型变量a和b的和与差,并将和sum与差diff返回给main函数。9.2.1 指针与函数知识点对于需要函数返回多个值的情况:可以将这两个变量sum和diff定义为全局变量(案例8.2.1);还可以将这两个变量作为函数的入参。参数该如何传递?9.2.1 指针与函数知识点#includevoid calculate( int sum,int diff,int a,int b){sum = a +b;diff = (a>b a-b:b-a);printf("In calculate,sum is %d,diff is %d\n",sum,diff);}int main(){int a,b,sum = 0,diff = 0;printf("请输入整型a和b的值:");scanf("%d %d",&a,&b);calculate(sum,diff,a,b);printf("In main,sum is %d,diff is %d",sum,diff);return 0;}请输入整型a和b的值:23 10↙In calculate,sum is 33,diff is 13In main,sum is 0,diff is 0案例9.2.1程序代码(错误实例)calculate()函数中计算出来sum和diff的值,这个结果并没有返回给calculate()函数的调用者main()。分析原因(1)calculate与main中的sum和diff,不同变量,作用域不同、所占内存空间不同。(2)sum、diff、a、b的值单向依次传给了calculate()的形式参数。以值传递,传递的是数值。9.2.1 指针与函数知识点#includevoid calculate( int *pSum,int *pDiff,int a,int b){*pSum = a +b;*pDiff = (a>b a-b:b-a);}int main(){int a,b,sum = 0,diff = 0;printf("请输入整型a和b的值:");scanf("%d %d",&a,&b);calculate(&sum,&diff,a,b);printf("sum is %d,diff is %d",sum,diff);return 0;}请输入整型a和b的值:23 10↙sum is 33,diff is 13案例9.2.1程序代码(正确实例)main()函数将sum和diff的地址值传给形参calculate中的pSum、pDiff;calculate中*pSum和*pDiff就是sum和diff。以值传递,传递的是地址信息。总结,通过函数调用改变某个变量的值,需要满足三个条件:①首先在主调函数中,传入函数的实际参数需要是该变量地址;②其次函数的形参需要是与该变量同类型的指针;③最后在函数内部,改变形参所指向的变量的值。用指针变量作为函数参数的方式,也可以实现函数返回多个变量的情况1.指针变量作为函数的参数9.2.1 指针与函数知识点数组名实际上就是一个指针常量,主调函数将数组名传递给被调函数时,仅仅是数组的首地址,在被调函数中无法获得数组元素的个数,还需要一个整型参数来表示数组的元素个数。2.数组名作为函数的参数9.2.1 指针与函数知识点要求:输入两个整数a,b,编写swap函数,通过调用swap函数实现a和b的交换。问题分析:如果希望通过函数调用改变a和b的值,需要满足三个条件:①首先在主调函数中,传入函数的实际参数需要是a和b的地址;②其次函数的形参需要是同类型的指针;③最后在函数内部,改变形参所指向的变量的值。案例9.2.2 定义函数交换两个变量的值9.2.2 指针与函数案例分析扫码观看视频9.2.1 指针与函数知识点#includevoid swap( int *pA,int *pB){int tmp;tmp = *pA;*pA = *pB;*pB = tmp;}int main(){int a,b;printf("请输入整型a和b的值:");scanf("%d %d",&a,&b);swap(&a,&b);printf("After swap,a is %d,b is %d",a,b);return 0;}案例9.2.2 代码请输入整型a和b的值:23 50↙after swap,a is 50,b is 23ab2350pApB*pA*pBtmp2350239.2.3 指针与函数课堂练习题课堂练习题9.2.1 运行下面的代码,查看swap1函数是否可以交换a和b变量的值?并分析原因。#includevoid swap1( int *pA,int *pB){int *tmp;tmp = pA;pA = pB;pB = tmp;}int main(){int a,b;printf("请输入整型a和b的值:");scanf("%d %d",&a,&b);swap1(&a,&b);printf("After swap,a is %d,b is %d",a,b);return 0;}9.2.3 指针与函数课堂练习题课堂练习题9.2.2 编写函数,求两个整数的和与差,可采用传入和与差的指针的形式。输入两个整数a和b,编写函数calc来计算a-b和a+b。课堂练习题9.2.3:编写函数,通过身份证号计算年龄。函数有两个形式参数:一个是存储身份证号的字符数组,另一个为整型指针,指向的是保存年龄的变量。谢谢观看程序设计基础 展开更多...... 收起↑ 资源预览