《东方一诺计算机二级C语言第8章指针.ppt》由会员分享,可在线阅读,更多相关《东方一诺计算机二级C语言第8章指针.ppt(22页珍藏版)》请在三一办公上搜索。
1、第八章 指针,变量的地址和指针指针变量函数之间地址值的传递函数返回地址值,8.1 变量的地址和指针变量与地址,程序中:int i;float k;,内存中每个字节有一个编号-地址,指针:一个变量的地址指针变量:专门存放变量地址的变量叫指针变量,指针,指针变量,变量的内容,变量的地址,2000,&与运算符含义,含义:取变量的地址单目运算符优先级:14结合性:自右向左,含义:取指针所指向变量的内容单目运算符优先级:14结合性:自右向左,两者关系:互为逆运算理解,p-指针变量,它的内容是地址量*p-指针的目标变量,它的内容是数据&p-指针变量占用内存的地址,p&i*p i,p=&i*p=i,8.2
2、指针变量,指针变量的定义一般形式:数据类型*指针名;,合法标识符,表示定义指针变量不是*运算符,例 int*p1,*p2;float*q;char*name;,注意:1、int*p1,*p2;与 int*p1,p2;2、指针变量名是p1,p2,不是*p1,*p2,给指针变量赋值指针变量的初始化一般形式:类型名*指针名=初始地址值;,赋给指针变量,不是赋给目标变量,例 int i=1,*p;p=,1.通过求地址运算符(&)获得地址值。,例:int i=1;int*p=,例 int i;int*p=,用已初始化指针变量作初值,2.通过指针变量获得地址值,注意:1、指针变量只能指向定义时所规定类型的
3、变量,例:char*p;int i;p=,例:int*p;int i;p=&i;,2、指针变量定义后,变量值不确定,应用前必须先赋值,例 main()int i=10;int*p;*p=i;printf(“%d”,*p);,危险!,例 main()int i=10,k;int*p;p=,指针变量必须先赋值,再使用,给指针变量赋“空”值零指针:(空指针)表示:int*p=NULL;,#define NULL 0int*p=NULL:,所以也可以:p=0;或p=0;表示指针有一个确定的值-”空”,例:inta=4,b=3,*p,*q,*w;p=,例 指针的概念,main()int a;int*pa
4、=,运行结果:1010f86f86f8a,8.5函数之间地址值的传递(p100)特点:共享内存,“双向”传递,swap(int x)x=9;main()int a;scanf(%d,例1,值传递,运行结果:5,#includeswap(int*p1)*p1=9;main()int a;int*po1;scanf(%d,例2,运行结果:9,地址传递,运行结果:5,例3,swap(int*p1)int b=9;p1=,地址传递,swap(int x,int y)int t;t=x;x=y;y=t;main()int a,b;int*po1,*po2;scanf(%d,%d,例4,值传递,运行结果:
5、5,9,例5,swap(int*p1,int*p2)int*p;p=p1;p1=p2;p2=p;main()int a,b;int*po1,*po2;scanf(%d,%d,地址传递,运行结果:5,9,值传递与地址传递,当是值传递时调用函数中的值肯定不变,如果是地址传递调用函数中值是否改变取决与被调用函数中交换的是谁(或变或不变)。地址传递也不一定会改变主函数中的值,必须与*结合,才可改变,8.4 函数返回地址值 函数定义形式:类型标识符 函数名(参数表);例 int f(int x,int y),例 写一个函数,求两个int型变量中居于较大值的变量的地址,int*f1(int*x,int*y)if(*x*y)return x;elsereturn y;,main()int a=2,b=3;int*p;p=f1(,2,3,2002,2000,*,例 写一个函数,求两个int型变量中居于较大值的变量的地址,2002,int*f1(int*x,int*y)if(*x*y)return x;elsereturn y;,main()int a=2,b=3;int*p;p=f1(,本节总结:,重点:指针变量的定义及应用难点:&和*运算符易混淆点:地址传递和值传递,东方一诺技术培训研发中心,作业:,8.17:编写函数,其功能是对传递过来的两个浮点数求出和值与差值,并通过形参传送回调用函数,
链接地址:https://www.31ppt.com/p-6533502.html