C语言第十六讲(指针与函数)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指针与函数
1.掌握指针变量为参数在调用函数和被调用函数之间的数据传递。
2.掌握函数返回地址值的方法。
3.掌握指向函数的指针及其运算。
4.能熟练运用指针变量完成C程序的编写。
1. 指针变量作为参数时实现数据传递
2.指向函数的指针及运算
3.函数返回地址值的方法
(一)导课
在C语言函数调用中,参数传递可以是一般变量的传递,也可以是地址的传递(指针)。
(二)课程要点
一、指针变量作为函数的参数
使用指针类型做函数的参数,实际向函数传递的是变量的地址。【例1】定义一个函数,用指针变量作参数实现两个数据的交换。
#include
void main()
{ void swap(int *pa,int *pb);
int a,b;
a=15;b=20;
printf("before swap a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("after swap a=%d,b=%d\n",a,b);
}
void swap(int *pa,int *pb)
{ int t; t=*pa; *pa=*pb; *pb=t;
}
其数据交换的变化过程如下图所示:
思考:将上面swap 函数作以下修改,a,b 的值是否发生了交换?
void swap(int *pa,int *pb)
{ int *t;
t=pa; pa=pb;
pb=t; }
程序运行结果:
before swap a=15,b=20 after swap a=20,b=15
程序运行结果: before swap a=15,b=20
after swap a=15,b=20
分析:如下图 pa pb pa pb
交换前 交换后
由图所知,交换后只是指针pa 、pb 的指向发生了变化,而a 、b
值并没有改变。
【例2】通过定义的函数,将数组a 中所有数据按相反顺序存储。
#include
void re(int *p,int n)
{ int *q,t;
q=p+n-1;
while(p { t=*p; *p=*q; *q=t; &a 15&b 20&b 15&a 20 t p++; q--; } } void main() { int a[10],j,*r; for(j=0;j<10;j++) scanf("%d",&a[j]); for(j=0;j<10;j++) printf("%d\t",a[j]); printf("\n");