C语言-地址和指针的概念-指针.ppt

C语言-地址和指针的概念-指针.ppt

ID:61752571

大小:404.50 KB

页数:40页

时间:2021-03-18

C语言-地址和指针的概念-指针.ppt_第1页
C语言-地址和指针的概念-指针.ppt_第2页
C语言-地址和指针的概念-指针.ppt_第3页
C语言-地址和指针的概念-指针.ppt_第4页
C语言-地址和指针的概念-指针.ppt_第5页
C语言-地址和指针的概念-指针.ppt_第6页
C语言-地址和指针的概念-指针.ppt_第7页
C语言-地址和指针的概念-指针.ppt_第8页
C语言-地址和指针的概念-指针.ppt_第9页
C语言-地址和指针的概念-指针.ppt_第10页
资源描述:

《C语言-地址和指针的概念-指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

2、0022005=92001=32003=62.间接访问*kp=*ip+*jp3014301030123015200430112000301320022005=92001=32003=6这里:ip,jp,kp:就称为指针变量,其值是另一个变量所对应的内存地址。ijkipjpkp200220002004301030123014369┇200020022004┇用户数据区10.2变量的指针和指向变量的指针变量变量的指针:就是变量的地址。如i所对应的内存地址是2000,则i的指针就是2000指针变量:用来存放变量地址的变量,如:ip所对应的地址是3010,其内容是2000,2

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

4、*p1=5;j=6;*p2=8;3568┇20002002ijp1p220002002说明:1、定义时指针变量名前以‘*’开头。2、指针变量一经定义就只可指向同类型的变量。如:float*p3;指针变量名是p3,它只能指向实型数据。3、在引用中,指针变量前加‘*’表示指针变量所指向的对象(即变量)。10.2.2指针变量的引用通常,只能将变量的地址赋给指针变量,但在Turboc中,整型数据(十进制、十六进制、八进制)也可赋给指针变量,如:int*p1;p1=100;printf(“%d”,*p1);指针变量有两种运算符:&:取地址运算符,如:p1=&i;*:指针变量所指对

5、象运算符,如:*p1,表示p1指向的对象是变量i例T10-1.c指针变量操作简例main(){inta,b,*p1,*p2;a=100;b=10;p1=&a;p2=&b;printf(“a=%d,b=%d”,a,b);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=ffd

6、4,p2=ffd6&p1=ffd8,&p2=ffda10010ffd4ffd6abp1p2ffd4ffd6ffd8ffda关于&和*运算符的进一步说明:*、&:优先级同为2级,结合性:从右向左。1.若已执行:inta,b,*p1,*p2;p1=&a;p2=&b;a=100;b=10;则①&*p1&a(p1)&*p2&b(p2)②p2=&*p1p2=&a&a&bp1p210100ba&a&ap2p110100ba2.*&a:先进行&a得a的地址,再对a的地址进行*运算即指向a地址所指向的变量,就是a,其值是1003.运算符*,++:优先级为2,结合性:从右到左(*p1)

7、++a++*p1++*(p1++)意即:将p1所指向的对象a的值取出,然后使p1自增,p1原指向a,现在可能指向下一个变量了。例T10-2.c输入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=%d,*p2=%d”,*p1,*p2);printf(“&a=%x,&b=%x”,&a,&b);printf(“p1=%x,p2=%

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

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

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