8.3 指针变量作函数参数(课件)-高二《程序设计基础》同步教学(人民邮电版)

2023-07-24
| 19页
| 170人阅读
| 0人下载
普通

内容正文:

8.3 指针变量作函数参数 指针与数组一样,可以作为函数的参数使用,本节将重点讲解指针在函数中的应用。 函数的参数不仅可以是整型、字符型和实型等基本数据类型的变量,还可以是指针类型。使用指针作为函数的参数更能体现函数的特点,增加程序设计的灵活性,增强函数的功能。使用指针作为函数参数实质上是采用地址传递的方式,将1个变量的地址传到另一函数中。 1、使用指针作为函数参数改写案例8-2的程序。 #include<stdio.h> void exchange(int*p,int*q) { int temp; temp=*p; *p=*q; *q=temp; } void main() { int a,b; int *t1,*t2; printf("please input the number a and b:"); scanf("%d %d",&a,&b); t1=&a; t2=&b; if(a>b) exchange(t1,t2); printf("the result is:%d %d",a,b); } 2.使用指针作为函数参数用法小结 (1)和基本函数调用一样,指针应该在使用之前先定义,至少应在使用之前加以声明;否则在执行程序时系统要出现错误提示,程序不能编译通过。 (2)不能企图通过改变指针形参的值而使指针实参的值改变,也就是说不能通过修改形参的指向来改变实参指针的指向。C语言中实参变量和形参变量之间的传递是单向的“值传递”方式,指针变量作为函数参数也要遵循这一原则。虽然在调用函数时不能改变实参指针变量的值,但可改变实参指针变量所指变量的值,这正是指针参数的优势所在。 (3)在本程序中,在主函数中还可以省略指针变量t1和t2,也可以达到同样的设计目的,完整的程序如下: #include<stdio.h> void exchange(int*p,int*q) { int temp; temp=*p; *p=*q; *q=temp; } void main() { int a,b; printf("please input the number a and b:"); scanf("%d %d",&a,&b); if(a>b) exchange(&a,&b); printf("the result is:%d %d",a,b); } 8.4 指针变量作函数参数 指针变量不仅可以指向基本类型的变量,也可以指向数组中的元素,在讲述相关内容之前,先回顾一下有关数组的定义及其概念。 1.数组与指针的关系 数组实质上是一组变量的有序集合,具有以下特点。 (1)同一数组中的每个元素的数据类型相同。 (2)数组在内存中占有一段连续的存储空间。 (3)数组下标是从0开始的自然数。 (4)数组名代表数组的首地址,也就是第1个数组元素的地址。 因此,只要把数组的首地址或某一元素的地址放到指针变量中,就在数组和指针之间建立起了联系,即可实现对数组元素的访问。 2.使用指针访问所指向数组中的元素 C语言规定:如果指针变量p已经指向数组中的1个元素,则可以通过改变指针的指向来实现对数组中其他元素的访问。 (1)指针的加减运算 如果用户想要控制指针变量指向数组中的其他元素,可以使用指针变量的加减运算,它有如下两种基本形式(其中p代表指针变量,i是1个自然数)。 · p+i(p-i):获得指针当前指向位置之后(前)i个元素的地址,以实现对该元素的访问,注意此时指针的指向并未改变。 · p++(p--):将指针从当前指向位置后移(前移)1个元素的位置,注意此时指针的指向已经发生改变。 习题 一、选择题 1.执行以下程序段后,m的值为_____。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4)); A.15 B.14 C.13 D.12 习题 2.以下程序的输出结果为_____。 void fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } void main() { int a,b,c,d; a=30;b=50; fun(a,b,&c,&d); printf("%d,%d ",c,d); } A.50,30 B.30,50 C.80,-20 D.80,20 3.函数调用时,若用数组名作实参,则传递给形参的是_____。 A.数组元素的个数 B.数组的起始地址 C.数组第一个元素的值 D.数组全部元素的值 4.若a是一维数组名,p是指针变量,是下列语句中非法的是_____。 A.p=a; B.p++ C.a++ D.p=&a[0] 5.若有以下定义: int a[]={1,2,3,

资源预览图

8.3  指针变量作函数参数(课件)-高二《程序设计基础》同步教学(人民邮电版)
1
8.3  指针变量作函数参数(课件)-高二《程序设计基础》同步教学(人民邮电版)
2
8.3  指针变量作函数参数(课件)-高二《程序设计基础》同步教学(人民邮电版)
3
8.3  指针变量作函数参数(课件)-高二《程序设计基础》同步教学(人民邮电版)
4
8.3  指针变量作函数参数(课件)-高二《程序设计基础》同步教学(人民邮电版)
5
8.3  指针变量作函数参数(课件)-高二《程序设计基础》同步教学(人民邮电版)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。