资源描述:
《C语言程序设计(第二版) 王宏志,韩志明主编 C语言程序设计9》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章指针C语言程序设计9.5指针与结构体9.4指针与函数9.3指针与数组9.2变量的指针与指针变量9.1指针变量的概念指针的作用:可以使程序简洁、紧凑、高效;有效地表示复杂的数据结构;动态分配内存;得到多于一个的函数返回值。9.6链表8/31/20212《C语言程序设计》-第九章9.1指针变量的概念9.1.2指针变量和指针类型9.1.1变量和地址8/31/20213《C语言程序设计》-第九章美美的家小强的家房间—变量名9.1.1变量和地址一个变量名代表内存中的一个存储单元,每个存储单元都有一个编号,这就是“地址”。房客—变量值101房间号—地址1028/
2、31/20214《C语言程序设计》-第九章53‘H’3.14ijchf……………………2000200220042005200920012003200620072008编译或函数调用时为变量分配内存单元内存中每个字节有一个编号——地址变量是对程序中数据存储空间的抽象inti,j;charch;floatf;i=5;j=3;ch=’H’;f=3.14;8/31/20215《C语言程序设计》-第九章…...…...2000200420062005整型变量i10变量pi200120022003指针:一个变量的地址。指针变量:专门存放另一变量地址的变量。2000指针
3、指针变量变量的内容变量的地址inti,*pi;i=10;pi=&i;8/31/20216《C语言程序设计》-第九章指针变量变量变量地址(指针)变量值指向地址存入指针变量指针:一个变量的地址。指针变量:专门存放另一变量地址的变量。8/31/20217《C语言程序设计》-第九章9.1.2指针变量和指针的类型指针变量和其他的变量一样代表内存中的一个存储单元,只是在此存储单元中仅能存放变量的地址值;一个指针变量只允许存放指定类型变量的地址。一个指针变量允许存放哪种类型变量的址,取决于对它的类型说明。8/31/20218《C语言程序设计》-第九章9.2变量的指针与指
4、针变量7.2.3指针运算7.2.2指针变量的初始化7.2.1指针变量的定义及使用8/31/20219《C语言程序设计》-第九章9.2.1指针变量的定义及使用[存储类型]数据类型*指针变量名;合法标识符指针变量本身的存储类型指针的目标变量的数据类型表示定义指针变量不是‘*’运算符注:(1)int*p1,*p2;指针变量名是p1,p2,不是*p1,*p2。(2)指针变量只能指向定义时所规定类型的变量。(3)指针变量定义后,变量值不确定,应用前必须先赋值。inti,j,*pi,*pj;floatf;float*pf;指针变量的定义8/31/202110《C语言程
5、序设计》-第九章指针变量的使用&:取变量的地址。单目运算符、优先级为2、右结合性。*:取指针变量所指地址中的内容,与&为互逆运算。单目运算符、优先级为2、右结合性。例:i=5;pi=&i;例:j=*pi;相当于j=i;4000指针变量pi整型变量i5*pi&ipi=&i=&(*pi)i=*pi=*(&i)8/31/202111《C语言程序设计》-第九章[例9.1]指针的运用。main(){inti,j;int*pi,*pj;i=2;j=4;pi=&i;pj=&j;printf("%d,%d",*pi,*pj);printf("%u,%u",pi,p
6、j);i=*pj+1;*pj=*pj+2;printf("%d,%d",i,j);printf("%d,%d",*pi,*pj);}2,465500,655025,65,68/31/202112《C语言程序设计》-第九章main(){intx,y,*px,*py,*p;scanf("%d%d",&x,&y);px=&x;py=&y;if(x7、输出x、y。6920062008指针变量px指针变量p指针变量py整型变量y整型变量x…20002008200220042006…69输入x=6,y=9输出MAX=9,MIN=62006200820068/31/202113《C语言程序设计》-第九章9.2.2指针变量的初始化赋给指针变量,不是赋给目标变量例inti;int*p=&i;变量必须已说明过类型应一致例int*p=&i;inti;()例inti;int*p=&i;int*q=p;用已初始化指针变量作初值例main(){intx;staticint*p=&x;..............}()不
8、能用auto变量的地址去初始化static型指针一般形式:[存储类