第五章+++指++++针

第五章+++指++++针

ID:46377083

大小:2.56 MB

页数:25页

时间:2019-11-23

第五章+++指++++针_第1页
第五章+++指++++针_第2页
第五章+++指++++针_第3页
第五章+++指++++针_第4页
第五章+++指++++针_第5页
资源描述:

《第五章+++指++++针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、内存单元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;指针操作的两种运算:取地址运算&&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关于指针的说明:⑴指针必须指向对象后,才能引用。int*p;*p=2;/

4、*Error!*/⑵&和*为互补运算。inta,*p;p=&a;则:&*pp*&aa⒋指针的运算指针是特殊类型的变量,其内容是变量的地址,因此指针的运算及结果一定要符合地址逻辑。⑴五种算术运算inta,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(*

5、p);⑵六种关系运算比较两个同类型变量之间的地址关系。p1>p2;指针赋值运算#includevoidmain(void){inta,b,*p1,*p2;a=2;b=3;p1=&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指针与数组数组是同类型的变量的集合,各元素按下标的特定顺序占据一段连续的内存,各元素的地址也连续,指针对数组元素非常方便。⒈指针与一维数组通过指针引用数组元素

6、可以分以下三个步骤:⑴说明指针和数组int*p,a[10];⑵指针指向数组p=a;/*指向数组的首地址*/p=&a[0];/*指向数组的首地址*/⑶通过指针引用数组元素当指针指向数组的首地址时,则下标为i的元素地址为:p+i或a+i引用数组元素可以有三种方法:下标法:a[i]指针法:*(p+i)数组名法:*(a+i)注意:数组名是地址常量,不能改变!a=p;/*Error!*/举例:打印数组中的奇数。#includevoidmain(void){inti,a[10];for(i=0;i<10;i++)scanf(“%d”,&a[i]);for(i=0;i<1

7、0;i++)if(a[i]%2)printf(“%d”,a[i]);}数组元素法。循环输入。循环判断,满足条件输出。数组名法。a+i*(a+i)指针法。,*p;p=a;p++*(p+i)结果是否正确?p=a;*p=&a[0];*注意指针在运算时的变化。⒉指针与字符串(字符数组)字符串在内存中可以存储为两种形式:⑴字符数组⑵字符串常量可以使指针指向字符数组或字符串常量,通过指针引用字符数组或字符串的各个字符。指针与字符数组:char*chp,str[]=”Hello!”;/*说明字符指针和字符数组*/

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

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

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