一诺课件10第8章指针_第1页
一诺课件10第8章指针_第2页
一诺课件10第8章指针_第3页
一诺课件10第8章指针_第4页
一诺课件10第8章指针_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章 指针变量的地址和指针指针变量函数之间地址值的传递函数返回地址值8.1 变量的地址和指针变量与地址程序中: int i; float k; 内存中每个字节有一个编号-地址2002内存0.2000200120072003ik2004.指针:一个变量的地址指针变量:专门存放变量地址的变量叫指针变量指针指针变量 变量的内容 变量的地址.200030003003整型变量 i10变量 p2003.2000&与运算符含义含义: 取变量的地址单目运算符优先级: 14结合性:自右向左含义: 取指针所指向变量的内容单目运算符优先级: 14结合性:自右向左两者关系:互为逆运算理解.2000200420062

2、005整型变量 i10变量 p2001200220032000指针变量p-指针变量,它的内容是地址量*p-指针的目标变量,它的内容是数据&p-指针变量占用内存的地址p &i *p i p = &i *p = i 8.2 指针变量指针变量的定义一般形式: 数据类型 *指针名;合法标识符表示定义指针变量不是*运算符例 int *p1,*p2; float *q ; char *name;注意:1、int *p1, *p2; 与 int *p1, p2;2、指针变量名是p1,p2 ,不是*p1,*p28.3.1给指针变量赋值指针变量的初始化一般形式:类型名 *指针名=初始地址值;赋给指针变量,不是赋

3、给目标变量例 int i=1,*p; p=&i; 1.通过求地址运算符(&)获得地址值。例:int i=1 ; int *p=&i;例 int i; int *p=&i; int *q=p;用已初始化指针变量作初值2.通过指针变量获得地址值例 int *p=&i; int i;注意:1、指针变量只能指向定义时所规定类型的变量例: char *p; int i; p=&i;例: int *p; int i; p=&i;2、指针变量定义后,变量值不确定,应用前必须先赋值例 main( ) int i=10; int *p; *p=i; printf(“%d”,*p); 危险!例 main( ) i

4、nt i=10,k; int *p; p=&k; *p=i; printf(“%d”,*p); 指针变量必须先赋值,再使用.2000200420062005整型变量i10指针变量p200120022003随机给指针变量赋“空”值零指针:(空指针)表示: int * p=NULL; #define NULL 0int *p=NULL:所以也可以:p=0;或p=0;表示指针有一个确定的值-”空”例:inta=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是( )A、*q=0;B、w=p;C、*p=a;D、*p=*w;例 指针的概念main()

5、int a; int *pa=&a; a=10; printf(%dn,a); printf(%dn,*pa); printf(%xn,&a); printf(%xn,pa); printf(%xn,&pa);运行结果:1010f86f86f8a.f86f8ef92f90整型变量a10指针变量paf88f8af8cf868.5函数之间地址值的传递 (p100)特点:共享内存,“双向”传递swap(int x) x=9;main() int a; scanf(%d,&a); swap(a); printf(%dn,a);例1值传递运行结果:5#includeswap(int *p1) *p1=9

6、;main() int a; int *po1; scanf(%d,&a); po1=&a; swap(po1); printf( %d n,a);例2运行结果:9地址传递运行结果:5例3swap(int *p1) int b=9; p1=&b;main() int a; int *po1; scanf(%d,&a); po1=&a; swap(po1); printf(%d,*po1);地址传递swap(int x,int y) int t; t=x; x=y; y=t;main() int a,b; int *po1,*po2; scanf(%d,%d,&a,&b); po1=&a; po

7、2=&b; if(ab) swap(*po1,*po2); printf(n%d,%dn,a,b);例4值传递运行结果:5 , 9例5swap(int *p1, int *p2) int *p; p=p1; p1=p2; p2=p;main() int a,b; int *po1,*po2; scanf(%d,%d,&a,&b); po1=&a; po2=&b; if(a*y)return x; elsereturn y;main() int a=2,b=3; int *p; p=f1(&a, &b); printf(%dn,*p);.20002008200A20022004200623 指针变量y 指针变量x(f1)20022000COPY变量a 变量b(main) 指针变量p*例 写一个函数,求两个int型变量中居于较大值的变量的地址.20002008200A2002200420062变量a 变量b(main)3 指针变量p*2002int *f1(int *x,int *y) if(*x*y)return x; elsereturn y;main() int a=2,b=3; int *p; p=f1(&a,&b

温馨提示

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

评论

0/150

提交评论