9.2 指针与函数 课件(共14张PPT)-《C语言程序设计》同步教学(西安电子科技大学出版社)

资源下载
  1. 二一教育资源

9.2 指针与函数 课件(共14张PPT)-《C语言程序设计》同步教学(西安电子科技大学出版社)

资源简介

(共14张PPT)
C 语言程序设计
2023
翻转课堂实用教程
9.2 指针与函数
1
2
3
指针变量作为函数参数
数组名作为函数参数
知识点
指针与函数案例分析
案例分析
指针与函数
相关练习题
练习题
指针变量作为函数的参数时:
将函数外部某些变量的地址传递到函数内部,在函数内部通过这些外部变量的地址操作这些外部变量。
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 指针与函数知识点
#include
void 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 13
In 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 指针与函数知识点
#include
void 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 指针与函数知识点
#include
void 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 23
a
b
23
50
pA
pB
*pA
*pB
tmp
23
50
23
9.2.3 指针与函数课堂练习题
课堂练习题9.2.1 运行下面的代码,查看swap1函数是否可以交换a和b变量的值?并分析原因。
#include
void 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:编写函数,通过身份证号计算年龄。
函数有两个形式参数:一个是存储身份证号的字符数组,另一个为整型指针,指向的是保存年龄的变量。
谢谢观看
程序设计基础

展开更多......

收起↑

资源预览