资源描述:
《c语言 指针总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、c语言指针总结第八章:指针知识结构:1)指针的基本概念2)怎么定义指针3)指针的运算1)指针的基本概念内存:以字节为单位,由若干个字节组成为了便宜管理,给每个字节编号(十六进制)每一个字节的编号在整个内存都是唯一定义变量:在计算机内存中去预定内存各类变量所预定的空间大小不同整型:intTC2字节VC4字节longTC4字节VC4字节shortTC2字节VC2字节实型:floatTC4字节VC4字节字符型:charTC1字节VC1字节变量的地址,指向变量的指针用来存储变量地址的变量,指针变量指针变量只能存储地址,类型必须要一致才能存储
2、scanf(2)定义指针变量inta,b;int*p,*q;类型名*指针变量名1,*指针变量名2...类型名14:该指针变量的基本类型,只能存储对应类型变量的地址*:指明该变量是一指针类型的变量(只能存储地址)float*ft1,*ft2;double*db1,*db2;指针变量名:不包括*号怎么样去访问变量的内容:1)拿到该变量的地址,直接对该地址进行访问2)通过指针变量来间接访问存储单元怎么样给指针变量赋值:inta,b;int*p,*q;获取变量的地址:可以用取地址运算符(&),将变量的地址取出&:将指定变量的首字节的编号拿
3、到得到指定变量的地址p=&a;:将a的地址取出存储到指针变量p中通过p可以间接访问变量ap就是指向变量a的指针q=&b;注意:指针变量的类型必须和变量的基类型是一致才能存储q=10;/*指针只能存储地址值*/inta,b,*q,*c,*p;p=&a;q=&b;c=p;/*将p中的内容取出,赋值给指针c,使指针c和指针p同时指向p所指向的变量*/14可以让指针不指向任何存储单元:int*p;p=NULL;P=0;P=‘\0’;上面三种方式,都可以使指针p没有指向inta,*p;int**q;/*指向指针的指针变量*/p=&a;q=&
4、p;指向指针的指针变量:基本类型**指针变量名1,**指针变量名2...只能存储指针变量的地址,指向的是指针用指针怎么样来访问变量:*指针变量名;*:运算符将指针所指向的变量内容访问出来inta,*p;a=10;p=&a;a*pinta,*p,**q;a=10;p=&a;q=&p;a*p**q&*都是单目运算符左边必须是一个变量名,不能表达式或常量左边必须能够代表一个唯一的存储单元地址错误赋值表达式:(A+B)=1010=10百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网92to.com,您的在线图书馆!从键盘上输入两个整
5、数,然后输出14*:定义语句中出现时,表示该变量是一个指针变量执行语句中出现时,代表间接访问指针变量所指向变量的值#includevoidmain(){inta,b,*p=&a,*q,*c,d;q=&b;c=&d;*c=*p;scanf(printf(}1020a=10,b=20Pressanykeytocontinue1)指针变量在定义时就可以给其进行初始化操作*:定义语句中出现时,表示该变量是一个指针变量执行语句中出现时,代表间接访问指针变量所指向变量的值2)凡是出现&a地方,都可以指针p去代替3)凡出现a的地方,都可以用
6、间接访问指针去代替(*p)指针:为操作存储单元提供一种间接的访问方式直接访问变量名属于直接操作2.交换a,b两个变量的值(指针来操作)#includevoidmain(){inta,b,*p=&a,*q=&b,t;scanf(p,q);printf(t=*p;*p=*q;/*将指针变量q所指向变量的值取出来赋值给指针变量p所指向的存储单元中*/*q=t;printf(}1020141)a=10,b=202)a=20,b=10Pressanykeytocontinue3.输入两个数,找出最大值(用指针来操作)#include
7、voidmain(){inta,b,*p=&a,*q=&b,*max=NULL;scanf(p,q);if(*p>*q)max=p;//使指针max和指针p指向同一个变量elsemax=q;printf(*max);}9050max=90Pressanykeytocontinue#includevoidmain(){inta=10,*p,**q;p=&a;q=&p;printf(}a=10,a=10Pressanykeytocontinue单目运算符:1)!逻辑非2)+正号3)-负号4)++自增5)--自减6)&取地址7)*
8、间接访问8)(类型名)强制类型转换平级:结合性右结合(从右到左的运算顺序)运算过程中:先按优先级别去运算,同级的按结合性去运算inta,*p;p=&a;14*p*(&a)ainta=10,*p=&a;(*p)++*p++10&a+1*