07指针简化.ppt_第1页
07指针简化.ppt_第2页
07指针简化.ppt_第3页
07指针简化.ppt_第4页
07指针简化.ppt_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、1,指针,2,指针,教学内容指针基本指针和函数指针作为函数参数指针函数(返回指针的函数)函数指针(指向函数的指针)指针和数组指针一维数组指针二维数组指针(数组指针)数组指针和字符串指针,3,指针和指针变量,内存概念计算机内存:由几个存储单元(字节)(字节的线性序列)组成内存单元中的数据(二进制)称为内存单元的内容。指针和指针变量、变量和地址变量:变量有变量名和值,变量也有类型。变量和地址:变量是程序中数据存储空间的抽象;变量值存储在存储单元中,变量名对应于该值所在的存储区的第一地址;(存储区中第一个存储单元的地址),通过变量地址对变量值的访问称为直接访问(第一个地址是通过变量名获得的,几个单元

2、的内容是根据变量类型取的)。任何变量都与存储地址(第一个地址)相关联。例如:系统如何根据地址访问数据?(注意:内存中没有像I、J和K这样的变量名,对变量的访问是通过地址来完成的。)、printf(“% d”,I);如:scanf (%d ),表示存储类型:它是指针指向的数据的存储类型。*:定义指针变量时,在指针变量名称前添加符号“*”。“*”被称为指针声明符,它指示它后面的名称是指针变量名。如int *p,* q;/*p和q是指针变量*/int a,b;存储类型数据类型*指针变量名;特别注意:定义指针变量时的类型是指针所指向的变量的数据类型。例如:int a,* p;浮动b。p=/,类型不匹配

3、,如短整型*p。浮点*p。数据类型,9,方法1:定义指针变量时,用变量的地址初始化指针变量(变量的类型必须与指针变量的基类型相同)。指针变量的初始化和赋值。方法2:使用地址运算符将地址值赋给指针变量。int c,*p1,* p2P1=,10,方法3:使用一个指针变量的值来分配另一个指针变量(它们应该具有相同的基类型),初始化并分配指针变量int c,*p1,* p2P1=P2=p1 /*使P1和P2都指向变量c */,错误的方法:int c,* p1P1=c;11,指针变量的引用,1表示指针指向,如int *p,i=3,j=5;P=/*让P指向变量i*/,2 *运算(指针运算):获取指针所指向

4、的单元的内容。在前面的例子中,*p=3(这里*指指针操作和指针引用)*p是指针指向的变量的值,变量P *p等于I *p1=,void main() int *p1,*p2,a1,a2,a;a1=10a2=20P1=,16,交换后,交换前,17,以下程序的输出结果zhizhen_004为:void main() int a=10,b=20Int *p=,程序运行结果:100,100,18,指针应用程序,指针作为函数参数指针,一维数组指针和字符串指针函数(函数返回指针)函数指针(指针指向函数)指针和二维数组(数组指针)指针数组,19,指针应用程序1:指针作为函数参数,参数传递的两种方式:值传递和地

5、址传递void交换(Int,int);互换(a,b);printf(“a=% d,b=%dn”,a,b);无效交换(int x,int y)int temp;temp=x。x=y;y=温度;printf(“x=% d,y=%dn”,x,y);20,地址传输方式:用指针实现zhizhen _ 006,void main () int a=3,b=5;无效交换(int *,int *);swap (,void swap (int *x,int * y)int temp;temp=* x;* x=* y;* y=温度;printf(“x=% d,y=%dn”,*x,* y”);21、*y,*x,20

6、10,2012,形式参数需要地址和形式参数,因此可以看出,使用指针作为函数参数可以改变调谐函数中主音函数的一些变量值,22,void main() void sub (int *,int *);int x=100,y=200Sub(,程序运行结果:10,20,23,示例zhizhen_007_1编写一个函数找出N个元素的最大值和最小值,#定义n10 void main()void max _ min(int arr,int *,int *,int);数组N=1,8,10,2,-5,0,7,15,4,-5;int *p1,*p2,最大值,最小值;p1=,void max_min (int arr

7、,int *pt1,int *pt2,int n)int j;* pt1=* pt2=arr0对于(j=1;j * pt1)* pt1=arrj;if(arrj * pt2)* pt2=arrj;24,指针作为函数参数练习(zhizhen_008):输入三个整数,按从小到大的顺序编写函数,并在主函数中输出这三个数字。调用函数时地址传递的描述定义了n个变量,并使n个指针变量指向它们;使用地址(指针)作为参数;使用参数指针更改已调函数中的变量值;更改后的值可用于主功能。25,指针应用程序2:指向一维数组的指针,指向一维数组的指针变量的定义,int a5,* p;p=a,int a5,* P=a;指针变量定义后,指针变量P与一维数组A的指向关系如图,int a5,* P;p=for(I=0;i6;i ) printf(%d,ai);/通过数组下标访问(I=0);

温馨提示

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

评论

0/150

提交评论