c语言课件第10章指针

c语言课件第10章指针

ID:39963494

大小:430.31 KB

页数:56页

时间:2019-07-16

c语言课件第10章指针_第1页
c语言课件第10章指针_第2页
c语言课件第10章指针_第3页
c语言课件第10章指针_第4页
c语言课件第10章指针_第5页
资源描述:

《c语言课件第10章指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章指针主要内容:(1)指针和地址(2)指针常量和指针变量(3)指针与数组的结合应用(4)指针与函数的结合应用(5)指针数组与指向指针的指针变量重点:指针变量的定义与引用通过指针访问数组元素指针变量作为函数参数返回指针值的函数10.1指针和指针变量例10.1:数据的直接访问与间接访问:main()ap{inta,*p;FFD6Hscanf("%d",&a);p=&a;/*变量p保存a的地址*/printf(“a=%d”,a);/*通过变量名访问单元:FFD6H*/printf(“*p:%d”,*p);/*通过指针变量P访问

2、单元:ffd6h*/printf(“p:%x”,p);/*输出变量p的值,即a的地址*/}指针:就是地址,变量的指针即指向该变量的地址。指针变量:存放内存(变量、数组、函数等)地址的变量。25FFD6H指针变量例10.2交换两个指针变量所指向的变量的值。main(){inta=10,b=20,t;int*p1,*p2;/*定义指向整型的指针变量p1,p2*/p1=&a;p2=&b;/*使p1指向a,p2指向b*/printf("beforeexchange:a=%d,b=%d",a,b);t=*p1;*p1=*p2;*p2

3、=t;/*交换p1,p2指向的变量的值*/printf("afterexchange:a=%d,b=%d",a,b);printf("*p1:%d,*p2:%d",*p1,*p2);}图示其执行过程:见下页本例中指针变量的作用:通过指针变量访问该指针变量指向的单元,指针变量的值不变。指针变量的定义的一般格式为:类型标识符*指针变量名例如:int*p;float*q;指针变量的引用:必须先定义,后使用指针变量定义后,可以对其进行如下操作:赋值、引用指针变量的值、访问指针变量指向的变量等。如上例中通过p1、p2访问变量a、b对应的

4、单元,其中p1表示指针变量,*p1表示p1指向的变量(即变量a),&p1表示指针变量p1所在单元的地址。回顾例10.2:通过指针变量p1,p2交换了变量a和b的值。那么,为什么要用指针变量而不直接用变量名呢?再回顾函数一章的例8.4:编写函数swap()交换两个变量的值,函数如下:viodswap(inta,intb){intt;t=a;a=b;b=t;}main(){intx=5,y=6;swap(x,y);printf("x=%d,y=%d",x,y);}结果:x=5,y=6程序并未实现交换x、y的值,why?因为参数传递是单

5、向的,对形参的改变不影响实参的值。指针变量作函数参数解决以上问题的方法是:指向变量的指针变量作函数形参,接收主调函数中实参变量的地址,实现传地址调用。即在被调函数中通过指针变量访问(读取或修改)主调函数中对应的变量,当返回主调函数后,主调函数就得到了这些已修改过的变量的值。因此,“传地址”调用可以实现函数间多个数据的“双向传递”。main()/*编写函数交换两个变量的值*/{inta,b;voidswap(int*p,int*q);printf("input2integers:");scanf("%d%d",&a,&b);prin

6、tf("beforeswap:a=%d,b=%d",a,b);swap(&a,&b);printf("afterswap:a=%d,b=%d",a,b);}voidswap(int*p,int*q)/*交换两个变量的值*/{intt;t=*p;*p=*q;*q=t;}调用过程中参数的对应关系:Main:swap:apbq*pa*qb因此,在swap函数中通过指针变量p、q就可以访问main函数中的变量a、b了。由此可以实现函数之间的多个“数据传递”。&a&b10.2指针与数组通过指针访问数组元素10.2.1指针与一维数组i

7、nta[6],*pa,k;a:a[0]a[1]……a[5]Afterexecute:pa=a;a[0]a[1]……a[5]a:papa+1pa+2例10.5分别用下标法和指针法访问一维数组。程序(1):下标法main(){inta[5]={1,2,3,5,7},i;for(i=0;i<5;i++)printf("%4d",a[i]);}程序(2):指针法main(){inta[5]={1,2,3,5,7},*p;for(p=a;p

8、[5]={1,2,3,5,7},i;for(i=0;i<5;i++)printf("%5d",*(a+i));}指针运算除赋值、取地址&、间接访问运算*外,对指针变量还可以进行加、减、比较运算.p=a;p=&a[0];

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。