c语言程序设计第章善于使用指针

c语言程序设计第章善于使用指针

ID:36291121

大小:436.50 KB

页数:23页

时间:2019-05-08

c语言程序设计第章善于使用指针_第1页
c语言程序设计第章善于使用指针_第2页
c语言程序设计第章善于使用指针_第3页
c语言程序设计第章善于使用指针_第4页
c语言程序设计第章善于使用指针_第5页
资源描述:

《c语言程序设计第章善于使用指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章善于使用指针8.1什么是指针8.2指针变量8.3通过指针引用数组8.4通过指针引用字符串8.1什么是指针1指针是C语言的精华(灵魂)掌握指针的应用,可以使程序简洁、紧凑、高效。指针是内存单元的地址(1)定义变量——分配存储单元。(2)存储单元——包含若干字节。(3)每个字节都有一个编号,即地址。(4)单元的地址是首字节的地址,即变量的地址。(5)地址形象化地成为“指针”,指针即地址。(6)变量的地址即变量的指针,指针指向该变量单元。(7)将变量的地址存放到一个变量中,此变量称指针变量。8.2指针变量8.2.1指针变量的定义、初始化和引用1定

2、义:inta,b,*p,*q;charch,*r;一般式:基类型*指针变量名;2定义指针变量时,可同时初始化:inta,b,*p=&a,*q=&b;charch,*r=&ch;3引用指针变量—3种情况(1)给指针变量赋值:例如:inta,b,*p,*q;p=&a;q=&b;注:指针变量只能存放地址,并且必须是与指针基类型相同类型的变量的地址,不能将一个整数赋给指针变量。(2)通过指针变量引用指针变量所指的变量例如:inta,b,*p,*q;p=&a;q=&b;*p=20;*q=*p+10;printf(“%d,%d”,*p,*q);print

3、f(“%d,%d”,a,b);注意:两个运算符“&”和“*”:&:取地址运算符,&a是变量a的地址。*:指针运算符,*p是指针p所指的变量。(3)引用指针变量的值(即地址值)printf(“%o,%o”,p,q);以八进制的数的形式输出指针变量p、q的值。例8.2(p214)输入a,b两个整数,按先大后小顺序输出。设计算法:使用指针,不交换两个整型变量的值,而是交换指针变量的值。编程序:#includevoidmain(){inta,b,*p,*p1,*p2;p1=&a;p2=&b;scanf(“%d%d”,p1,p2)

4、;if(avoidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}voidmain(){i

5、nta,b,*q1=&a,*q1=&b;scanf(“%d%d”,q1,q2);if(a

6、p1=p2;p2=temp;}结论:用指针作函数的参数,可以将多个值带回到主调函数,相当有多个返回值。8.3通过指针引用数组8.3.1数组元素的指针数组中的每个元素同变量一样,都有相应的地址,即为数组元素的指针,也可以将此地址放到一个指针变量中。例如:inta[10],*p;p=&a[0];/*指针变量p指向数组元素a[10]*/也可写成:inta[10],*p=&a[0];分析:inta[10],*p=a;也可写成:inta[10],*p;p=a;/*同p=&a[0],但不能写成*p=a*/分析:*p=10;/*同a[0]=10*/p=a+2;

7、/*同p=&a[2]*/p++;*p=20;/*同a[3]=20*/注意:数组名是地址常量,是数组的首地址,亦是数组中首元素的地址,即元素a[0]的地址。8.3.2通过指针引用数组元素引进指针概念后,引用一个数组元素可以有2种方法:(1)下标法:即数组名加下标,如a[i]形式。(2)指针法:即地址法,如*(a+i)同a[i]一样。例8.6(p221)用不同的方法输出整数数组的元素值。#includevoidmain(){inti,j,t,a[20],*p=a;for(i=0;i<10;i++)scanf(“%d”,&a[i]);

8、for(i=0;i<10;i++)printf(“%4d”,a[i]);printf(“”);for(i=0;i<10;i++)pr

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

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

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