第十章 指针ppt课件.ppt

第十章 指针ppt课件.ppt

ID:59010862

大小:692.00 KB

页数:38页

时间:2020-09-26

第十章 指针ppt课件.ppt_第1页
第十章 指针ppt课件.ppt_第2页
第十章 指针ppt课件.ppt_第3页
第十章 指针ppt课件.ppt_第4页
第十章 指针ppt课件.ppt_第5页
资源描述:

《第十章 指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章指针10.1指针概念10.2变量的指针和指向变量的指针变量10.3指针变量的定义10.5指针与数组10.4指针变量的引用10.6字符串的指针和指向字符串的指针变量10.7指针与函数10.8指向结构体类型数据的指针10.9动态数据结构第10章指针10.1指针概念指针是C的一个重要概念。其特点是:能有效地表示复杂的数据结构;能动态地分配内存,直接处理内存地址;能方便、有效地使用字符串和数组;能在调用函数后获得多个值。C中定义的变量,在编译时按变量的类型来分配一定长度的内存单元。在运行时,根据变量名与地址的对应关系,相应地存取变量的数据。这种按变量地

2、址存取变量值的方法称为“直接访问”方式。如果变量的地址也存放在某一个内存单元,则存取方式为先找到存放变量的地址单元,再取变量的值,这种方式称为“间接访问”方式。如:p=&i;将变量i的地址存放到变量p“指向”的内存单元中10.2变量的指针和指向变量的指针变量变量的指针就是变量的地址,即p的值。也就是说,指针变量的值就是该指针变量所指变量的内存首地址。在p的前面加上一个“*”,即*p就表示指针变量p所指向的变量。从右图可知:*p也是一个变量,且与变量i是同一回事。i=3;p=&i;*p=3;将3赋给指针变量p所指向的变量,与i=3等价用户数据区2000

3、3变量i20026变量j20049变量k30102000变量p10.3指针变量的定义定义形式:类型标识符*标识符;指针变量必须定义为“指针类型”。如:inti,j;ijint*p1,*p2;p1p2p1=&i;p2=&j;p1,p2为指向整型变量i,j的指针变量。说明:类型可以是整型、实型、字符型等。标识符前的“*”表示该变量为指针变量。指针变量只能指向同一类型的变量。上述的指针变量是p1、p2,而不是*p1、*p2。*p1和*p2是p1和p2所指向的变量i和j。*p1*p2指针变量中只能存放地址。p1=100;是非法的10.4指针变

4、量的引用与指针有关的运算符:&取地址运算符如:&a为变量a的地址指针运算符如:*p为指针变量p所指向的变量运算和&运算互为逆运算。指针变量p的内容为地址量;p*px*p=i;是将变量i的值赋给目标变量*p。i&p为指针变量p的地址。&p&(*p)的结果为p,即变量*p也就是变量x的地址。*(&i)表示访问变量i的地址,结果就是i本身。至此,你应该明白了p、*p和&p的意义。&x*p为指针p的目标量,内容为数据,即指针变量p所指向的变量的值。例10.1main(){inta,b;int*p1,*p2;a=100;b=10;p1=&a;p2

5、=&b;printf(“%d,%d”,a,b);printf(“%d,%d”,*p1,*p2);}将变量a和b的地址赋给指针变量p1和p2*p1和*p2就是变量a和b运行结果:100,10100,10说明:若先执行p1=&a;再执行&*p1;是什么意思?这里“&”和“*”的优先级相同,但按“自右至左”结合,即&*p1与&a相同。p1a&*p1而p2=&*p1;的作用是将&a赋给p2。p2若先执行p1=&a;则*&a和*p1的作用相同。即:*&a与a是等价的(*p1)++等价于a++。*p1*&a括号是必须的,否则就成为*(p1++)。这时

6、先按p1的原值进行*运算得到a的值。然后使p1的值改变,则p1不再指向a了。注意:例10.2 main() {int*p1,*p2,*p,a,b; scanf(“%d%d”,&a,&b); p1=&a;p2=&b; if(a

7、指针变量的定义与赋值例:inta[10],*p;p=&a[0];将a[0]元素的地址赋给指针变量p在C中,数组名代表数组的首地址。因此p=a;与p=&a[0];是等价的。注:p=a;是将a数组的首地址赋给指针变量p。但这里的a并不代表整个数组。2.通过指针引用数组元素若p=a;是将整型数组a的首地址赋给整型指针变量p,则*p=5;是将整数5赋给a数组的第一个元素a[0],等价于a[0]=5。p+1表示指针变量p当前所指的数组元素的下一个元素。但p+1不是p的值加1。若有p=&a[0];则p+i(或a+i)就是a[i]的地址(因为a代表数组a的首地址

8、)。若有p=&a[0];则*(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即a

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

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

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