资源描述:
《cc语言程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章指针1目录变量的指针和指向变量的指针变量2数组与指针3字符串与指针4指向函数的指针5地址和指针的概念1指针数组和指向指针的指针7有关指针的数据类型和指针运算的小结8返回指针指的函数62学习目标了解指针的意义和基本概念1掌握指针变量的定义和引用2指针和数组3指针和函数4指针变量以及指向指针变量的应用5指针变量与普通变量作函数参数的异同6310.1地址和指针的概念程序中:inti;floatk;内存中每个字节有一个编号-----地址ik编译或函数调用时为其分配内存单元,对变量值的存取都是通过地址进行的。…...…...内存ik200020012002200502
2、003内存单元的地址内存单元的内容4直接访问与间接访问直接访问:按变量地址存取变量值间接访问:通过存放变量地址的变量去访问变量例i=3;-----直接访问指针变量…...…...2000200420062005整型变量i10变量i_pointer20012002200320003例*i_pointer=20;-----间接访问205指针与指针变量指针:一个变量的地址指针变量:专门存放变量地址的变量…...…...2000200420062005整型变量i10变量i_pointer2001200220032000指针指针变量变量的内容变量的地址6指针变量是专门用来存
3、放变量的地址(即指针)的。10.2.1指针变量的定义3变量i2000i_pointer*i_pointer2000指针变量变量变量地址(指针)变量值指向地址存入指针变量指针变量同其所指向的变量之间的关系7类型名*指针变量名1[,*指针变量名2,......];合法标识符*是说明符,表示该变量是一个指针变量,而不是‘*’运算符指针的目标变量的数据类型例int*p1,*p2;float*q;staticchar*name;注意:1、int*p1,*p2;与intp1,p2;2、指针变量名是p1,p2,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针
4、变量定义后,变量值不确定,应用前必须先赋值指针变量的定义8指针变量的初始化方法一:通过求地址运算(&)获得地址值例:inti;int*p=&i;变量必须已定义过类型应一致例:int*p=&i;inti;9方法二:利用另一个指针变量赋值例:inti;int*p=&i;int*q=p;用已经初始化指针变量作初值10例main(){inti=10;int*p;*p=i;printf(“%d”,*p);}危险!例main(){inti=10,k;int*p;p=&k;*p=i;printf(“%d”,*p);}指针变量必须先赋值,再使用…...…...2000200420
5、062005整型变量i10指针变量p200120022003随机11注意:指针变量中只能存放地址(指针)不要将一个整型量(或其它非地址类型的数据)赋给一个指针变量。例:int*pointer_1;pointer_1=100×编译不会出错,但是会出现警告信息。Assignmentmakespointerfromintegerwithoutacast.10.2.2指针变量的引用12指针变量的运算:&和*运算符含义:取变量的地址单目运算符优先级:2结合性:自右向左含义:取指针所指向的变量单目运算符优先级:2结合性:自右向左&a表示变量a的地址,*p表示指针变量p所指向的
6、存储单元的内容。两者关系:互为逆运算13…...…...2000200420062005整型变量i10变量i_pointer2001200220032000指针变量i_pointer-----指针变量,它的内容是地址*i_pointer----指针的目标变量,它的内容是数据&i_pointer---指针变量占用内存的地址200010i_pointer*i_pointerii_pointer&i&(*i_pointer)i*i_pointer*(&i)i_pointer=&i=&(*i_pointer)i=*i_pointer=*(&i)14例:chari,j,*p
7、1,*p2;i='a';j='b';p1=&i;p2=&j;*p2=*p1;例:chari,j,*p1,*p2;i='a';j='b';p1=&i;p2=&j;p2=p1;比较以下两段程序,分析它们的差异?15通过指针变量访问整型变量例:main(){inta,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;pointer_2=&b;printf("%d,%d",a,b);printf("%d,%d",*pointer_1,*pointer_2);}16例ch10_2输入两个数,并使其从大到小输出mai
8、n(){i