《C语言程序设计》第5章指针

《C语言程序设计》第5章指针

ID:45447694

大小:2.98 MB

页数:45页

时间:2019-11-13

《C语言程序设计》第5章指针_第1页
《C语言程序设计》第5章指针_第2页
《C语言程序设计》第5章指针_第3页
《C语言程序设计》第5章指针_第4页
《C语言程序设计》第5章指针_第5页
资源描述:

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

1、第五章指针Pointer5.1指针的基本概念指针是C语言的重要特征,是C语言访问内存数据和程序的灵活和有效的手段。C语言的指针支持:⑴函数的地址调用;⑵动态分配内存;⑶数组的地址引用。⒈内存、地址、指针(Memory,Address,Pointer)内存存放了计算机正在运行的程序和程序正在使用的数据。内存的基本单元是字节(Byte)。为了访问内存单元,CPU给每个内存单元一个编号,该编号称为该内存单元的地址。变量是程序中可以改变的量,当说明变量时,系统将为其在内存中开辟相应得内存单元。由此确定变量的地址及内存中的表示方式。2000H2001H2002H2003H

2、inta=0;a的内存单元a的地址&a如果有一变量p,其内容存放了a的地址&a,通过p也可实现对a的访问,p称为指针,并指向a。00H20H00p⒉指针的说明指针是特殊类型的变量,其内容是变量的地址。在使用前必须说明,说明某标识符是指针类型,并可指向某种类型的对象。指针的说明格式:type*pname1,…*pnamen;标识符命名的指针变量名。指针标志。指针指向对象的类型。int*p,*q;/*p、q是指向整型变量的指针。*/float*pfValue,*pf;/*pfValue和pf是指向浮点型的指针。*/⒊指针对变量的引用定义指针的目的是通过指针引用内存对

3、象,指针的引用应按如下步骤进行:⑴说明指针inta=0,*p;⑵指针指向对象p=&a;⑶通过指针引用对象*p=*p+2;4.指针操作的两种运算符:取地址运算&&a表示取变量a地址的运算。间接运算**p表示取指针p指向变量内容的运算。inta,*p;2000Happ=&a;/*p指向a。*/2000H*p=2;2举例:#includevoidmain(void){intx,*p;x=55;p=&x;printf(“%d,%u”,x,*p);*p=65;printf(“%d,%u”,x,*p);}2000Hxp2000H5565关于指针的说明:⑴指

4、针必须指向对象后,才能引用。int*p;*p=2;/*Error!*/⑵&和*为互补运算。inta,*p;p=&a;则:&*pp*&aa【例5-1】/*example5-1指针访问简单变量示例*/#includevoidmain(void){inta,b,*p1,*p2;p1=&a;/*p1指向a*/p2=&b;/*p2指向b*/scanf("%d%d",p1,&b);printf("a+b=%d",*p1+*p2);}5。指针的运算指针是特殊类型的变量,其内容是变量的地址,因此指针的运算及结果一定要符合地址逻辑。⑴五种算术运算inta

5、,b,*p1,*p2;p1=&a;p2=&b;a2000Hb2400Hp1p22000H2400Hp1++;/*含义指向a后的整型单元*/2002H2002Hp1--;/*指向a前的整型单元*/p1+n;/*指向a后的第n个整型单元*/p1-n;/*指向a前的第n个整型单元*/p2-p1;/*a和b之间差的单元数*/结果200Hp±n相当于:p的实际内容±nsizeof(*p);⑵六种关系运算比较两个同类型变量之间的地址关系。p1>p2;指针赋值运算#includevoidmain(void){inta,b,*p1,*p2;a=2;b=3;p

6、1=&a;p2=&b;*p1=*p2;printf(“%d,%d”,a,b);a=3;b=5;p1=p2;printf(“%d,%d”,*p1,*p2);}差别a&a2000Hb&b2400Hp1p2232000H2400H5.2指针与数值型数组数组是同类型的变量的集合,各元素按下标的特定顺序占据一段连续的内存,各元素的地址也连续,指针对数组元素非常方便。⒈指针与一维数组通过指针引用数组元素可以分以下三个步骤:⑴说明指针和数组int*p,a[10];⑵指针指向数组p=a;/*指向数组的首地址*/p=&a[0];/*指向数组的首地址*/⑶通过指针引用数组元素当

7、指针指向数组的首地址时,则下标为i的元素地址为:p+i或a+i引用数组元素可以有三种方法:下标法:a[i]指针法:*(p+i)数组名法:*(a+i)注意:数组名是地址常量,不能改变!a=p;/*Error!*//*example5-2通过指针访问数组元素*/#includevoidmain(void){doubledArray[10],dAvge,*dPointer;inti;dAvge=0;dPointer=dArray;/*指针指向数组*/for(i=0;i<10;i++){scanf("%lf",dPointer+i);/*dPointe

8、r+i为下标为i的元素地

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

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

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