第十章:指针

第十章:指针

ID:46571134

大小:285.50 KB

页数:64页

时间:2019-11-25

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

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

1、第10章指针10.1地址和指针的概念指针pointers:与机器内部的硬件结构(内存地址)及其对数据的处理形式等有关。变量包括:对应的地址(称指针,是内存单元号)对应的值(具体的数值)指针变量:存放变量地址的变量由此对变量的操作可通过指针来完成例如:inti,j,k;i=3;j=6;k=i+j;编译时,系统将内存单元分配给变量后,程序执行时对变量的操作实际上就是根据变量名查找与之对应的变量的地址,然后按地址对数据进行操作。1.直接访问k=i+j2004200020022004=92000=32002

2、=62.间接访问*kp=*ip+*jp3014301030123014200430102000301220022004=92000=32002=6ip,jp,kp:指针变量,其它变量的内存地址。ijkipjpkp200220002004301030123014369┇200020022004┇用户数据区10.2变量的指针和指向变量的指针变量变量的指针:就是变量的地址。指针变量:用来存放变量地址的变量,如:变量i的指针(地址)是2000,ip是存放i的指针的变量,其自身地址是3010,内容是20

3、00,即i的地址(指针)。即:ip是存放变量i地址的指针变量(ip=&i;)*ip是指针变量ip所指的对象变量(*ip=i)ip20003i2000i=3则等价*ip=310.2.1定义一个指针变量指针变量使用前必须定义,以便使其指向特定类型的变量。指针变量定义形式:类型标识符*标识符其中:类型标识符:表示所指向变量的数据类型标识符:表示指针变量名.例:float*p3;/*p3是指向实型变量的指针变量*/char*p4;/*p4是指向字符型变量的指针变量*/inti,j;int*p1,*p2;p1

4、=&i;p2=&j;i=3;*p1=5;j=6;*p2=8;3568┇20002002ijp1p22000200210.2.2指针变量的引用1、指针变量有两种运算符&:取地址运算符可将变量的地址赋给指针变量,如:p1=&i;*:指针变量所指对象运算符如:*p1,访问p1所指对象:变量i说明:定义时,指针变量名前以*开头说明用途。引用中,指针变量名前加*表示指针变量所指对象看下面的一个例子。main(){inta,b;int*p1,*p2;a=10;b=20;p1=&a;p2=&b;printf(“%

5、d,%d”,a,b);printf(“%d,%d”,*p1,*p2);}main(){inta,b,c;int*p1,*p2;a=10;b=20;p1=&a;p2=&b;c=*p1+*p2;*p1=*p1+c;printf(“%d”,c);printf(“%d,%d”,*p1);}运行结果:3040运行结果:10,2010,20指针变量操作简例main(){inta,b,*p1,*p2;a=100;b=10;p1=&a;p2=&b;printf(“a=%d,b=%d”,a,b);

6、printf(“*p1=%d,*p2=%d”,*p1,*p2);printf(“&a=%x,&b=%x”,&a,&b);printf(“p1=%x,p2=%x”,p1,p2);printf(“&p1=%x,&p2=%x”,&p1,&p2);}运算结果:a=100,b=10*p1=100,*p2=10&a=ffd4,&b=ffd6p1=ffd4,p2=ffd6&p1=ffd8,&p2=ffda10010ffd4ffd6abp1p2ffd4ffd6ffd8ffda2、&和*运算符的优先级

7、与结合性*和&的优先级:同为2级结合性:从右向左。例如:inta,b,*p1,*p2;a=100;b=10;p1=&a;p2=&b;则①&*p1&a(p1)&*p2&b(p2)②p2=&*p1p2=&a③*&aa&a&bp1p210100ba&a&ap2p110100ba3.指针的算术运算指针赋值:可将地址常量或指针变量的值赋给另一个变量。inta,b,*p1,*p2;p1=&a;p2=&b;a=100;b=10;p2=p1;指针与整数作加减运算:p2+1表示p2所指单元的下一个单元*和++

8、或--:优先级为2,结合性:从右到左(*p1)++a++,*p1++*(p1++)后者表示:先访问p1所指对象(即变量a),然后使p1自增,p1原指向a,现在指向下一个变量4.指针变量赋初值inta,*p=&a;看下面的例子.举例:输入a,b,用指针方法按先大后小的顺序输出。main(){int*p1,*p2,*p,a,b;scanf(“%d%d”,&a,&b);p1=&a;p2=&b;printf(“a=%d,b=%d”,a,b);printf(“*p1=%

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

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

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