c语言程序设计(王勇)第8章指针_第1页
c语言程序设计(王勇)第8章指针_第2页
c语言程序设计(王勇)第8章指针_第3页
c语言程序设计(王勇)第8章指针_第4页
c语言程序设计(王勇)第8章指针_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章指针,C程序设计中使用指针可以:使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存得到多于一个的函数返回值,8.1变量的地址和指针,程序中:shorti;floatk;,内存中每个字节有一个编号-地址,i,k,编译或函数调用时为其分配内存单元,变量与内存中某存储空间具有对应关系,变量实质上是代表了“内存中的某个存储单元,指针与指针变量指针:一个变量的地址指针变量:专门存放变量地址的变量叫,指针,指针变量,变量的地址,2000,例:shorti=10,*ip;,若:int*p=,-直接访问,3,例*ip=20;-间接访问,20,8.2指针变量的定义和指针变量的基类型,指针变量的定义一般形式:存储类型数据类型*指针名;,合法标识符,指针变量本身的存储类型,指针的目标变量的数据类型,表示定义指针变量不是*运算符,例int*p1,*p2;float*q;staticchar*name;,注意:1、int*p1,*p2;与int*p1,p2;2、指针变量名是p1,p2,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针变量定义后,变量值不确定,用前须先赋值,8.3指针变量的赋值,例inti;int*p=,变量必须已说明过类型应一致,例inti;*p=,例main()inti;staticint*p=(),存储类型也应一致不能用auto变量的地址去初始化static型指针,初始化:,用已初始化指针变量作初值,注意类型的匹配,例main()inti=10;int*p;*p=i;printf(“%d”,*p);,危险!,例main()inti=10,k;int*p;p=,指针变量必须先赋值,再使用,例输入两个数,并使其从大到小输出,main()int*p1,*p2,*p,a,b;scanf(%d,%d,main()int*p1,*p2,*p,i1=10,i2=20;p1=,main()int*p1,*p2,i1=10,i2=20,i;p1=,零指针与空类型指针零指针:定义:指针变量值为零表示:int*p=0;,#defineNULL0int*p=NULL:,void*类型指针表示:void*p;使用时要进行强制类型转换,例char*p1;void*p2;p1=(char*)p2;p2=(void*)p1;,指针变量的赋值运算p=(指针变量p2值p1)不能把一个整数p,也不能把p的值整型变量,如inti,*p;p=1000;()i=p;(),指针变量与其指向的变量具有相同数据类型,8.4指针的运算,指针的算术运算:p+,p-,p+i,p-i,p+=i,p-=i等p1与p2指向同一数组,p1-p2=两指针间元素个数p1+p2无意义,1,指针变量的关系运算若p1和p2指向同一数组,则p1p2表示p1指的元素在后p1=p2表示p1与p2指向同一元素若p1与p2不指向同一数组,比较无意义p=NULL或p!=NULL,例voidmain()inta=5,8,7,6,2,7,3;inty,*p=,输出:56,例注意指针变量的运算,6,y,先将5赋给y,main()inti,*p,a7;p=a;for(i=0;i7;i+)scanf(%d,p+);printf(n);for(i=0;i7;i+,p+)printf(%d,*p);,例注意指针的当前值,p=a;,指针变量可以指到数组后的内存单元,swap(intx,inty)inttemp;temp=x;x=y;y=temp;main()inta,b;scanf(%d,%d,传值,特点:共享内存,“双向”传递,8.5函数之间地址值的传递,swap(int*p1,int*p2)intp;p=*p1;*p1=*p2;*p2=p;,指针做函数参数,main()inta,b;int*p1,*p2;scanf(%d,%d,swap(int*p1,int*p2)intp;p=*p1;*p1=*p2;*p2=p;main()inta,b;int*p1,*p2;scanf(%d,%d,swap(int*p1,int*p2)int*p;*p=*p1;*p1=*p2;*p2=*p;main()inta,b;int*p1,*p2;scanf(%d,%d,编译警告!结果不对!,intx;int*p=,swap(intx,inty)intt;t=x;x=y;y=t;main()inta,b;int*p1,*p2;sca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论