第9讲-数组和指针_第1页
第9讲-数组和指针_第2页
第9讲-数组和指针_第3页
第9讲-数组和指针_第4页
第9讲-数组和指针_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、2.6 指针的基本概念指针的基本概念 什么是指针?如何理解?什么是指针?如何理解? 指针变量的定义及初始化指针变量的定义及初始化2.6.1 2.6.1 指针的概念指针的概念int i;float f;2000 2001 2002 2003 2004 2005 2006 2007 2008地址:字节的编号地址:字节的编号int i;float f;首地址首地址: 2000: 2000首地址首地址: 2005: 20052000 2001 2002 2003 2004 2005 2006 2007 2008变量地址?变量地址?int i,*p;i=3;p=&i ; 直接访问直接访问间接访问

2、间接访问指针变量指针变量* *p p指向变量的指向变量的地址地址2.6.2 2.6.2 指针变量的定义指针变量的定义int *p;double *q; 代表是代表是指针变量指针变量类型说明类型说明和指向的和指向的存储单元存储单元的数据类的数据类型相同型相同用于存放指向用于存放指向变量的地址变量的地址 变量名变量名2.6.3 2.6.3 指针变量的初始化指针变量的初始化int a=3;int *p;p=&aint *p=&aint a用于存放变量的内容用于存放变量的内容int *a用于存放变量的地址用于存放变量的地址 int i,*p; p=&i; int *p; flo

3、at *q; p=q; int i; float *p; p=&i; int *p; p=100;指针变量只指针变量只存放地址存放地址! !一个指针变量不能一个指针变量不能指向与其类型不同指向与其类型不同的变量的变量! !我是真的,我是真的,你猜对了吗?你猜对了吗?应在类型相应在类型相同的指针变同的指针变量之间赋值量之间赋值判断?判断?int i=3,*p;P=&i;*p=3 P P: :指针变量,内容是指针变量,内容是地址地址* *p p:指针变量所指向的变量:指针变量所指向的变量内容是内容是数据数据P=& i:取地址取地址* *p=p=* * & i :取内

4、容取内容思考?思考?*p=?*q=?思考?思考?输入输入3,5.4*p=15*q=2.4ma3.变量的别名变量的别名自身没有值自身没有值也没有地址值也没有地址值不占空间不占空间2.7引用引用引用特点引用特点引用作为函数的引用作为函数的参数和返回值参数和返回值二、指针变量的含义二、指针变量的含义int a=3;int *p;p=&a*p=3 /内容内容int *p=&aint a用于存放变量的内容用于存放变量的内容int *p用于存放变量的地址用于存放变量的地址int a,*p=&a,*q;q=p; 同类型同类型p+, p+=2pq; 同类型同类型指针在使用前指针在使用前

5、必须定义必须定义三、指针变量的运算三、指针变量的运算pppi5int *pp;四、多级指针四、多级指针aint a10;*p;p=a;/指向一维数组的指针指向一维数组的指针a9a8a7a1a0 数组名数组名a a为数组内存空间的首地址,是为数组内存空间的首地址,是地址常量地址常量数组首地址数组首地址&a0 p ap如何理解如何理解p=a?课堂练习课堂练习3647a数组首地址数组首地址使用使用aa9a8a7a1a0数组首地址数组首地址下标法:下标法:&ai ai 指针法指针法: a+i *(a+i) *(p+i)int a10, *p;p=a;a或或P的值为的值为&a0

6、数组名为地址常量数组名为地址常量int a10, *p;p=a;指针是变量指针是变量即可使用也可赋值即可使用也可赋值P+,p-,p+=2数组名是常量数组名是常量只能使用不能赋值只能使用不能赋值a=a+2;a+1;思考?思考?分析下列程序的输出结果。分析下列程序的输出结果。b0b1b12b11b10b02b01b00int b23,(int b23,(* *p)3;p)3;p=b; p=b; /p/p指向指向b b的第的第0 0行行 p=&b0p=&b0P P为指向具有为指向具有3 3个元素的一维数组的指针个元素的一维数组的指针b如何理解如何理解p=b?数组数组b理解为理解为两个

7、一维数组两个一维数组地址常量地址常量b=&b0地址常量地址常量bi=&bi0使用使用地址常量地址常量b=&b0地址常量地址常量bi=&bi0int b23,(*p)3;p=b; 指向第一行地址指向第一行地址 元素地址元素地址&bijbi+j或或*(b+i)+j 元素内容元素内容 bij*(bi+j)或或*(*(b+i)+j)或或(*(b+i)j思考?思考?分析下列程序的输出结果。分析下列程序的输出结果。char c=“program”char *t=“program”C= “program”()/字符串名是常量地址字符串名是常量地址 字符指针变量字符指针

8、变量指向字符串的首字符地址指向字符串的首字符地址 coutt coutcoutt cout* *t /t /有什么区别?有什么区别?如何理解如何理解?比字符数组比字符数组更灵活、方便更灵活、方便0mprogras思考?思考?若为:若为:coutp+endl; cout*pendl; programogramrammprogRamprogramrogramogramgramramammxbcdBCD思考?思考?数组名数组名为首地址为首地址p0p1p2p3pint *p4;指针数组指针数组数据都为指针变量数据都为指针变量-地址地址地址常量地址常量P=&p0表示该数组的首地址表示该数组的首地

9、址四、指针数组四、指针数组用于处理用于处理多字符串多字符串指针数组的初始化指针数组的初始化 int a4=1,2,3,4; : int *p=a; &(p+i)表示元素地址表示元素地址:int *p4 =&a0,&a1 ,&a2,&a3;指向一维数组指向一维数组中多个变量中多个变量#includevoid main()int a12=1,2,3,4,5,6,7,8,9,10,11,12,*p4,i;for(i=0;i4;i+)pi=&ai*3;cout *(p3+2) endl; / *(*(p+3)+2), p32p0 p1p2 p3思考?思考?指向多个字符串指向多个字符串p0p1p2p3Follow meBASICGreat WallFORTRAN

温馨提示

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

评论

0/150

提交评论