资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
东方一诺技术培训研发中心东方一诺技术培训研发中心第八章 指针变量的地址和指针指针变量函数之间地址值的传递函数返回地址值东方一诺技术培训研发中心东方一诺技术培训研发中心 8.1 变量的地址和指针 变量与地址程序中: int i; float k; 内存中每个字节有一个编号-地址2002内存 0.2000200120072003ik2004.东方一诺技术培训研发中心东方一诺技术培训研发中心 指针:一个变量的地址 指针变量:专门存放变量地址的变量叫指针变量指针指针变量变量的内容变量的地址.200030003003整型变量 i10变量 p2003.2000东方一诺技术培训研发中心东方一诺技术培训研发中心 float *q ;char *name;注意: 1、int *p1, *p2; 与 int *p1, p2; 2、指针变量名是p1,p2 ,不是*p1,*p2东方一诺技术培训研发中心东方一诺技术培训研发中心 8.3.1给指针变量赋值 指针变量的初始化 一般形式:类型名 *指针名=初始地址值;赋给指针变量, 不是赋给目标变量例 int i=1,*p;p= 1.通过求地址运算符( int *p=东方一诺技术培训研发中心东方一诺技术培训研发中心例 int i;int *p= int *q=p;用已初始化指针变量作初值2.通过指针变量获得地址值例 int *p=int i;东方一诺技术培训研发中心东方一诺技术培训研发中心注意: 1、指针变量只能指向定义时所规定类型的变量例: char *p;int i;p=例: int *p;int i;p=int *p;*p=i;printf(“%d”,*p);危险!例 main( ) int i=10,k;int *p;p=*p=i;printf(“%d”,*p);指针变量必须先赋值,再使用.2000200420062005整型变量i 10指针变量p200120022003随机东方一诺技术培训研发中心东方一诺技术培训研发中心 给指针变量赋“空” 值 零指针:(空指针) 表示: int * p=NULL; #define NULL 0 int *p=NULL: 所以也可以:p=0;或p=0; 表示指针有一个确定的值-”空”例:int a=4,b=3,*p,*q,*w;p= q= w=q; q=NULL;则以下选项中错误的语句是( ) A、*q=0; B、w=p; C、*p=a; D 、*p=*w;东方一诺技术培训研发中心东方一诺技术培训研发中心例 指针的概念main() int a;int *pa=a=10;printf(“%dn“,a);printf(“%dn“,*pa);printf(“%xn“,printf(“%xn“,pa);printf(“%xn“, 运行结果: 10 10 f86 f86 f8a.f86f8ef92f90整型变量a 10 指针变量paf88f8af8cf86东方一诺技术培训研发中心东方一诺技术培训研发中心 8.5函数之间地址值的传递 (p100) 特点:共享内存,“双向”传递swap(int x) x=9; main() int a;scanf(“%d“,swap(a);printf(“%dn“,a); 例1值传递运行结果:5东方一诺技术培训研发中心东方一诺技术培训研发中心#include swap(int *p1) *p1=9; main() int a;int *po1;scanf(“%d“,po1= swap(po1);printf(“ %d n“,a); 例2运行结果:9地址传递东方一诺技术培训研发中心东方一诺技术培训研发中心运行结果:5例3 swap(int *p1) int b=9;p1= main() int a;int *po1;scanf(“%d“,po1= 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“,po1= po2=if(a*y) return x;else return y; main() int a=2,b=3;int *p;p=f1(printf(“%dn“,*p); .20002008200A2002200420062 3指针变量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;else return y; main() int a=2,b=3;int *p;p=f1(printf(“%dn“,*p); 东方一诺技术培训研发中心东方一诺技术培训研发中心本节总结: 重点:指针变量的定义及应用 难点:&和*运算符 易混淆点:地址传递和值传递东方一诺技术培训研发中心东方一诺技术培训研发中心东方一诺技术培训研发中心东方一诺技术培训研发中心作业:8.17:编写函数,其功能是 对传递过来的两个浮点数求 出和值与差值,并通过形参 传送回调用函数
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号