《C语言第八章》PPT课件.ppt
《《C语言第八章》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《C语言第八章》PPT课件.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 善于使用指针善于使用指针l主要内容什么是指针指针变量l定义、引用、和普通变量的关系l指针作为函数参数通过指针引用数组通过指针引用字符串l字符串指针作为函数参数提高部分18.1 什么是指针什么是指针l有关指针的一些概念指针:lC语言中,将地址形象化的称为指针通过指针找到数据,就是通过地址找到数据指针变量:l存放指针的变量,称之为指针变量指针变量里面存放的是指针,也就是地址为什么使用指针l更方便、更主动的操作数据、构建数据结构28.1 什么是指针什么是指针l学习指针的几点建议弄明白存放在内存中的数据是如何访问的l这是学习指针的基础清晰的记住指针和变量的几个关系:l指针的内容,指针指向
2、的内容等等明白指针作为函数参数、返回值的作用l将地址传递到函数,使得几个函数变量共同操作一个数据地址,实现数据交换38.1 什么是指针什么是指针l指针与地址存储器中的一个字节为一个单元,为了能够正确访问这些单元,必须为其编号。称之为地址所有数据都是存放在存储器中的。占据一个或多个单元。这些单元即数据在内存中的存放地址。一般来讲,一个数据是存放在多个连续的存储单元中的48.1 什么是指针什么是指针l指针与地址如果数据占据多个单元,一般的访问方式是,确定数据占据的单元数目,然后从其所占据单元的首地址开始依次访问指针变量存储的是数据占据单元的首地址,可以直接访问地址单元。指针变量若要访问存储的数据。
3、则需要知道数据的首地址和数据占据的空间指针变量的类型,就是数据占据的空间大小58.2 指针变量指针变量l8.2.1 使用指针变量的一个例子程序:void main()int a;int*p;/定义指针变量,变量前面加*a=100;p=&a;/将变量a的地址赋给指针pprintf(a=%dn,a);printf(*p=%dn,*p)/通过指针访问数据68.2 指针变量指针变量l8.2.2 指针变量的定义格式:类型说明符:*变量名“*”表示指针变量,说明这个变量是指针类型类型说明符:说明指针指向数据的类型若要改变指针指向的数据类型,则需要进行强制类型转换指针的值存放指向数据的首地址,指针的类型确定
4、了指向数据占据的单元数目78.2 指针变量指针变量l8.2.3 指针变量的引用变量的数据访问形式l普通变量:变量名变量存储的数据l指针变量:*变量名指向存储单元存储的数据定义时:*p表示为指针;使用时*p表示指针指向的数据变量的地址访问形式l普通变量:&变量名存储数据的首地址l指针变量:变量名指向的存储单元一般情况下,不要将地址值直接赋给指针变量88.2 指针变量指针变量l8.2.3 指针变量的引用一般情况下,不能将地址值直接赋给变量l若有 int a,*p;l则:&a=1000 p=2000是错误的指针不会单独使用,常和其他普通变量关联在一起使用l关联方式:p=&a l使用指针,必须要先给其
5、一个地址,再访问地址中的数据,如同使用变量必须有一个确定值一样98.2 指针变量指针变量l8.2.3 指针变量的引用指针和变量的几个换算关系:l对于变量,有:名称=数据、&名称=地址l对于指针,有:名称=地址、*名称=指向的数据l若有定义:int a,*p 则:&a、p 是同一类型数据,为地址a、*p 是同一类型数据,为整型数据l一般情况下,使用p=&ap=&a的形式,让指针与变量关联,使用*p的形式,访问指向的数据108.2 指针变量指针变量l8.2.4 指针变量作为函数参数复习:函数参数的传值与传址方式l传值:传递后形参不影响实参l传址:传递后实参、形参指向同一地址l利用传址的特点,改变形
6、参指针指向数据的内容,即可改变对应实参指针指向的内容l利用传址方式,可以让函数在保持独立性的同时,实现对主程序中的数据进行批量修改的功能。118.2 指针变量指针变量l8.2.4 指针变量作为函数参数指针作为函数参数,是一种传址方式。利用实参形参指向同一地址的特性,使函数可以改变上层函数中变量的值l使用这种方法,必须使用传址的特性,将要改变的变量的地址作为实参,传递给下层调用函数l函数的参数也必须为指针,通过在函数中改变指针指向的数据的值,就改变了实参指向数据的值,也就改变了实参所在函数中变量的值128.2 指针变量指针变量l8.2.4 指针变量作为函数参数例:用函数实现两个变量交换。l传值:
7、函数无法改变实参的值,不能实现l全局变量:可以实现,但函数独立性差函数的调用必须使用在函数之外定义的全局变量全局变量的定义必须符合函数要求的名称l传址:利用传址的特性,可以实现要求,同时保持了函数的独立性函数的参数必须是指针形参、实参的值均没有改变,改变的是地址中的值138.2 指针变量指针变量l8.2.4 指针变量作为函数参数例:用函数实现两个变量交换。l主程序void main()int a,b*pa,*pb;scanf(%d,%d,&a,&b);pa=&a;pb=&b;/指针pa指向变量a、pb指向变量bswap(pa,pb);/传递指针变量到函数printf(a=%d,b=%d,a,b
8、);148.2 指针变量指针变量l8.2.4 指针变量作为函数参数例:用函数实现两个变量交换。l变量交换函数void swap(int*p1,int*p2)int temp;/形参指针p1和实参指针pa的指向相同 /形参指针p2和实参指针pb的指向相同temp=*p1;/将p1指向地址的值存放到临时变量temp中*p1=*p2;/将p2指向地址的值放到p1指向的地址中*p2=temp;/将变量temp的值放到p2指向的地址中158.2 指针变量指针变量l8.2.4 指针变量作为函数参数168.3 通过指针引用数组通过指针引用数组l8.3.1 数组元素的指针指向数组元素的指针l将数组元素的地址赋
9、给指针若有int a5,*p 则可以:p=&a3l其使用和指向变量的指针没有区别指向数组的指针l指向数组首地址的指针,称为指向数组的指针l数组的名称,就是一个指向数组首地址的指针178.3 通过指针引用数组通过指针引用数组l8.3.2 通过指针引用数组元素指针的运算:仅有加减法运算l指针的算术运算,并非单纯的地址运算,而是同时涉及指针的地址、类型的一种运算l指针变量+1,是指指针指向的地址位置为下一个数下一个数据位。据位。l指针变量+1,要根据指针类型的长度来确定实际地址的增减量l即有(p+n)的地址=p的地址+sizeof(p的类型)*n188.3 通过指针引用数组通过指针引用数组l8.3.
10、2 通过指针引用数组元素指针的运算:仅有加减法运算l有如下定义:int a5,*p;p=a;l若p指向的地址为数组首地址2000Hl则p+1的地址为2000H+sizeof(int)*1sizeof(int)*1=2004H,不是单纯的2000H+1H=2001Hl同样:p+4的地址为2000H+sizeof(int)*4=2016H198.3 通过指针引用数组通过指针引用数组l8.3.2 通过指针引用数组元素数组元素的访问,就是通过对这个首地址进行计算,得到数组元素的确定位置后进行的访问数组元素的两种方式l数组变量引用:数组变量名下标l指针变量引用:*(指向数组的指针+下标)l对于数组a10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言第八章 语言 第八 PPT 课件
限制150内