- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
§9.1地址和指针的概念§9.2指针变量和地址运算符§9.3指针和数组§9.4指针和函数§9.5多级指针*★地址:是存储单元的一个编号,用来标示和区别不同的存储单元★指针:一个变量的地址★变量指针(变量地址):变量所对应的存储单元的地址★指针变量:一个变量的地址存放在另一个变量中,该存放地址的变量就是第九章指针★指针变量的定义◆一般形式:类型*变量标识符,*变量标识符,…;例:int*PXfloat*q◆指针变量的使用▲:取地址运算符▲*:指针运算符含义:取变量的地址单目运算符优先级:2结合性:自右向左含义:取指针所指向变量的内容单目运算符优先级:2结合性:自右向左▲两者关系:互为逆运算…...…...2000200420062005整型变量i10变量i_pointer2001200220032000指针变量i_pointeri(*i_pointer)i*i_pointer*(i)200010i_pointer*i_pointeri_pointerii_pointer-----指针变量,它的内容是地址量*i_pointer----指针的目标变量,它的内容是数据i_pointer---指针变量占用内存的地址★理解:例9-1main(){intx,y;int*px,*py,*p;printf(“%o,%o,%d,%d,%d,%d\n”,px,py,*px,*py,x,y);px=x;printf(“%o,%o,%d,%d,%d,%d\n”,px,py,*px,*py,x,y);y=*px;printf(“%o,%o,%d,%d,%d,%d\n”,px,py,*px,*py,x,y);py=y;printf(“%o,%o,%d,%d,%d,%d\n”,px,py,*px,*py,x,y);p=y;printf(“x=%d,y=%d\n”,x,y);printf(“x=%d,y=%d,y=%d\n”,*px,*py,*p);}运行结果为:313,2660,0,0,24,1254177736,2660,24,0,24,1254177736,2660,21,0,21,1254177736,2660,21,0,21,21x=21,y=21x=21,y=21,y=21例9-2从5个整型数据中求最大者main(){inta[5],i,*p;for(i=0;i5;i++)scanf(“%d”,a[i]);for(i=1,p=a[0];i5;i++)if(a[i]*p)p=a[i];printf(“themaxis%d\n”,*p)}程序运行结果为:1383519themaxis35?指针和数组的联系假设有语句:inta[20],*ap;ap=a[2];把a[2]的地址赋给ap,使ap指向a[2]在c语言中,数组名表示该数组首地址。所以ap=a;=ap=a[0]注意:数组名是一个地址常量,所以只能引用数组名,不能对其进行赋值。?通过指针存取数组元素C语言中约定如果一个指针ap指向a[i],则ap+1指向a[i+1]。改写后的例9-2main(){inta[5],*p,*q;inti,j;for(i=0,p=a;i5;p++)scanf(“%d”,p);for(q=a,p=a+1,i=1;i5;i++,p++)if(*p*q)q=p;printf(“themaxis%d\n”,*q);}原例main(){inta[5],i,*p;for(i=0;i5;i++)scanf(“%d”,a[i]);for(i=1,p=a[0];i5;i++)if(a[i]*p)p=a[i];printf(“themaxis%d\n”,*p)}请读者比较二者的异同!?指针的算术运算◆ap?i?a
文档评论(0)