最全的C语言指针详解复习进程.ppt

最全的C语言指针详解复习进程.ppt

ID:61288008

大小:713.50 KB

页数:47页

时间:2021-01-24

最全的C语言指针详解复习进程.ppt_第1页
最全的C语言指针详解复习进程.ppt_第2页
最全的C语言指针详解复习进程.ppt_第3页
最全的C语言指针详解复习进程.ppt_第4页
最全的C语言指针详解复习进程.ppt_第5页
资源描述:

《最全的C语言指针详解复习进程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、最全的C语言指针详解2.指针与指针变量(1)变量的访问方式①直接访问:通过变量名或地址访问变量的存储区例:scanf(“%d”,&x);x=sqrt(x);printf(“%d”,x);②间接访问:将一个变量的地址存放在另一个变量中.如将变量x的地址存放在变量p中,访问x时先找到p,再由p中存放的地址找到xpx201210101010(2)指针:一个变量的指针就是该变量的地址(指针就是地址)(3)指针变量:存放变量地址的变量,它用来指向另一个变量二、指针变量的定义1.格式:数据类型*指针变量名;例int*p1;char*p2;

2、2.说明:(1)在变量定义时,*号表示该变量是指针变量(注意:指针变量是p1,p2,不是*p1,*p2)(2)定义指针变量后,系统为其分配存储空间,用以存放其他变量的地址,但在对指针变量赋值前,它并没有确定的值,也不指向一个确定的变量例:intx,*p;x=5;px2012101051234注:指针变量p的值是随机值,此时p和x并无关联(3)使指针变量指向一个确定的变量必须进行赋值intx,*p;x=5;p=&x;px2012101051010三、指针变量的引用1.指针运算符*(1)p与*p不同,p是指针变量,p的值是p所指向

3、的变量的地址*p是p所指向的变量,*p的值是p所指向的变量的值*p的值为5(*p表示x),而p的值为1010(2)引用指针变量时的*与定义指针变量时的*不同定义变量时的*只是表示其后的变量是指针变量inta,*p;p=&a;scanf(“%d”,p);printf(“%d”,*p);*p=12;printf(“%d”,*p);pa201210105101012让p指向a对a重新赋值等价于a=12即&a2.&与*p=&a;*&a*(&a)*pa&*p&(*p)&a2abcd53.*与++,--inta=2,b=

4、5,c,d,*p;p的值为a的地址,*p的值为2p的值不变,*p的值为3(2)c=*p++;c=*(p++);{c=*p;p++;}执行后c的值为3,*p的值为5(3)d=*++p;d=*(++p);{++p;d=*p;}执行后d的值为3,*p的值为3p201210101010(1)p=&a;(*p)++;(等价于a++;)10123310143例6.2#includevoidmain(){int*p1,*p2,*p,a,b;scanf(“%d%d”,&a,&b);p1=&a;p2=&b;if(a

5、p=p1;p1=p2;p2=p;}printf(“a=%d,b=%d”,a,b);printf(“max=%d,min=%d”,*p1,*p2);}abp1p2p&a&b&a&b&a59输出结果:a=5,b=9max=9,min=5一、指针变量作函数参数例:2个数按大小顺序输出#includevoidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}voidmain(){inta,b;scanf(“%d%d”,&a,&b);if(a

6、tf(“a=%d,b=%d”,a,b);}abxytemp5说明:该程序不能实现a和b的交换因为实参a,b对形参x,y是“值传递”,x和y的变化不影响a和b所以输出为:a=5,b=99mainswap559956.2指针与函数例6.3①#includevoidswap1(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}voidmain(){inta,b,*pt1,*pt2;scanf(“%d%d”,&a,&b);pt1=&a;pt2=&b;if(a

7、swap1(pt1,pt2);printf(“a=%d,b=%d”,a,b);}abp1p2temp&b&apt1pt25说明:这种方法是交换p1和p2所指向的变量的值,即交换main函数中a和b的值所以输出为:a=9,b=5mainswap159&a&b95例6.3②#includevoidswap2(int*p1,int*p2){int*temp;*temp=*p1;*p1=*p2;*p2=*temp;}说明:这种方法可能会破坏系统的正常工作状态,因为temp是一个指针变量但是在函数中并没有给temp

8、一个确定的地址,这样它所指向的内存单元是不可预见的,而对*temp的赋值可能带来危害abpt1pt2main&a&bp1p2temp&b&aswap2?随机值55959例6.3③#includevoidswap3(int*p1,int*p2){int*p;p

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

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

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