最全的c语言指针详解

最全的c语言指针详解

ID:21862806

大小:704.50 KB

页数:47页

时间:2018-10-20

最全的c语言指针详解_第1页
最全的c语言指针详解_第2页
最全的c语言指针详解_第3页
最全的c语言指针详解_第4页
最全的c语言指针详解_第5页
资源描述:

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

1、第6章指针6.1指针定义与使用6.2指针与函数6.3指针与数组6.4指针与字符串6.5指针数组与多级指针6.6指针与动态内存分配6.7指针的深层应用6.1指针的引出一.地址与指针1.地址与取地址运算C程序中的变量在内存中占有一个可标识的存储区,每一个存储区是由若干个字节组成,每一个字节都有自己的地址,而一个存储区的地址是指该存储区中第一个字节的地址C语言允许在程序中使用变量的地址(通过地址运算符&可得到)如:floatx;变量x的地址----&xinta[10];数组变量a的地址----数组名a2.指针与指针变量(1)变量的访问方式①直接访问:通过变量名或地址访问变量

2、的存储区例:scanf(“%d”,&x);x=sqrt(x);printf(“%d”,x);②间接访问:将一个变量的地址存放在另一个变量中.如将变量x的地址存放在变量p中,访问x时先找到p,再由p中存放的地址找到xpx201210101010(2)指针:一个变量的指针就是该变量的地址(指针就是地址)(3)指针变量:存放变量地址的变量,它用来指向另一个变量二、指针变量的定义1.格式:数据类型*指针变量名;例int*p1;char*p2;2.说明:(1)在变量定义时,*号表示该变量是指针变量(注意:指针变量是p1,p2,不是*p1,*p2)(2)定义指针变量后,系统为其分

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

4、其后的变量是指针变量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=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=*

5、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

6、例:2个数按大小顺序输出#includevoidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}voidmain(){inta,b;scanf(“%d%d”,&a,&b);if(avoidswap1(int*p

7、1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}voidmain(){inta,b,*pt1,*pt2;scanf(“%d%d”,&a,&b);pt1=&a;pt2=&b;if(avoidswap2(

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

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

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