C语言指针知识点总结

C语言指针知识点总结

ID:39852792

大小:53.69 KB

页数:10页

时间:2019-07-13

C语言指针知识点总结_第1页
C语言指针知识点总结_第2页
C语言指针知识点总结_第3页
C语言指针知识点总结_第4页
C语言指针知识点总结_第5页
资源描述:

《C语言指针知识点总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#includeVoidg(int*p,int*q){*p=1;*q=2;}Intmain(void){Inta=3,b=5;g(&a,&b);Printf(“%d%d”,a,b);Return0;}指针使函数返回一个以上的值Intf(inti,intj){return100;//return88;error}Intmain(void){Inta=3,b=5;a=f(a,b);b=f(a,b);}只能返回一个值指针★指针的重要性表示一些复杂的数据结构快速传递数据使函数返回一个以上的值能直接访问硬件能方便处理字符串是理解面向对象语言中引用的基础总结:指针是C语言的灵魂★

2、指针的定义☆地址内存单元的编号从零开始的非负整数范围:4G☆指针1.指针就是地址,地址就是指针2.指针变量是存放地址的变量3.指针和指针变量是两个不同的概念4.叙述时通常把指针变量简称为指针,实际它们含义不一样5.指针的本质就是一个操作受限的非负整数★指针的分类☆基本类型指针(重要)#includeintmain(void){int*p;//p是变量的名字,int*表示p变量存放的是int类型变量的地址Int*p;不表示定义了一个名字叫做*p的变量Int*p;应该理解为:p是变量名,p变量的数据类型是int*类型所谓int*类型,实际就是存放int变量地址的类型inti=

3、3;charch=’A’p=&i;//OK1.p保存了i的地址,因此p指向i2.p不是i,i也不是p,修改p的值不影响i的值,修改i的值也不影响p的值3.如果一个指针变量指向了某个普通变量,则*指针变量完全等同于普通变量例:若p指向i,则*p=i(*p和i可互相替换)p=&ch;//error//p=i;//error,因为类型不一致,p只能存放int类型变量的地址,不能存放int类型变量//P=55;//error,原因同上return0;}△附注:▷*的含义:1.乘法2.定义指针变量Int*p;//定义了一个名字叫做p的变量,int*表示p只能存放int变量的地址3.指针运算符该运算符

4、放在已经定义好的指针变量的前面如果p是一个已经定义好的指针变量则*p表示以p的内容为地址的变量▷如何通过被调函数修改主调函数普通变量的值1.实参必须为该普通变量的地址&...2.形参必须为指针变量*...3.在被调函数中通过*形参名=......的方式就可以修改主调函数相关变量的值例子:经典指针程序:互换数值#includevoidhuhuan3(int*p,int*q)//形参的名字是p和q,接收实参数据的是p和q,而不是*p和*q{intt;//如果要互换*p和*q的值,则t必须是int,不能是int*t=*p;//p是int*,*p是int*p=*q;*q=t;re

5、turn;}intmain(void){inta=3;intb=5;huhuan3(&a,&b);/*huhuan3(*p,*q)是错误的huhuan3(a,b)也是错误的*/printf(“a=%d,b=%d/n”,a,b);return0;}a=5,b=3Pressanykeytocontinue互换成功#includevoidhuhuan(inta,intb){intt;t=a;a=b;b=t;return;}intmain(void){inta=3;intb=5;huhuan(a,b);printf(“a=%d,b=%d/n”,a,b);return0;}a=3,

6、b=5Pressanykeytocontinue互换失败#includevoidhuhuan2(int*p,int*q){int*t;//如果要互换p和q的值,则t必须是int*,不能是intt=p;p=q;q=t;return;}intmain(void){inta=3;intb=5;huhuan2(&a,&b);/*huhuan2(*p,*q);是错误的huhuan2(a,b);也是错误的*/printf(“a=%d,b=%d”,a,b);return0;}a=3,b=5Pressanykeytocontinue互换失败形参和实参是不同的变量,修改形参不会改变实参

7、▷指针常见错误#includeIntmain(void){Inti=5;Int*p;Int*q;P=&i;//*q=p;//error语法编译会出错//*q=*p;//errorP=q;//q是垃圾值,q赋给p,p也是垃圾值printf(“%d”,*q);//13行/*q的空间是属于本程序的,所以本程序可以读写q的内容,但是如果q内部是垃圾值,则本程序不能读写*q的内容因为此时*q所代表的内存单元的

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

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

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