资源描述:
《东方一诺计算机二级c语言第8章指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章指针变量的地址和指针指针变量函数之间地址值的传递函数返回地址值8.1变量的地址和指针变量与地址程序中:inti;floatk;内存中每个字节有一个编号-----地址2002内存0…...…...2000200120072003ik2004…...指针:一个变量的地址指针变量:专门存放变量地址的变量叫指针变量指针指针变量变量的内容变量的地址….….200030003003整型变量i10变量p2003….….2000&与*运算符含义含义:取变量的地址单目运算符优先级:14结合性:自右向左含义:取指针所指向变量的内容单目运算符优先级:1
2、4结合性:自右向左两者关系:互为逆运算理解…...…...2000200420062005整型变量i10变量p2001200220032000指针变量p-----指针变量,它的内容是地址量*p----指针的目标变量,它的内容是数据&p---指针变量占用内存的地址p&i*pip=&i*p=i8.2指针变量指针变量的定义一般形式:数据类型*指针名;合法标识符表示定义指针变量不是‘*’运算符例int*p1,*p2;float*q;char*name;注意:1、int*p1,*p2;与int*p1,p2;2、指针变量名是p1,p2,不是*p1,
3、*p28.3.1给指针变量赋值指针变量的初始化一般形式:类型名*指针名=初始地址值;赋给指针变量,不是赋给目标变量例inti=1,*p;p=&i;1.通过求地址运算符(&)获得地址值。例:inti=1;int*p=&i;例inti;int*p=&i;int*q=p;用已初始化指针变量作初值2.通过指针变量获得地址值例int*p=&i;inti;注意:1、指针变量只能指向定义时所规定类型的变量例:char*p;inti;p=&i;例:int*p;inti;p=&i;2、指针变量定义后,变量值不确定,应用前必须先赋值例main(){inti
4、=10;int*p;*p=i;printf(“%d”,*p);}危险!例main(){inti=10,k;int*p;p=&k;*p=i;printf(“%d”,*p);}指针变量必须先赋值,再使用…...…...2000200420062005整型变量i10指针变量p200120022003随机给指针变量赋“空” 值零指针:(空指针)表示:int*p=NULL;#defineNULL0int*p=NULL:所以也可以:p=‘ ’;或p=0;表示指针有一个确定的值---”空”例:inta=4,b=3,*p,*q,*w;p=&a;q=&
5、b;w=q;q=NULL;则以下选项中错误的语句是()A、*q=0;B、w=p;C、*p=a;D、*p=*w;例指针的概念main(){inta;int*pa=&a;a=10;printf("%d",a);printf("%d",*pa);printf("%x",&a);printf("%x",pa);printf("%x",&pa);}运行结果:1010f86f86f8a…...…...f86f8ef92f90整型变量a10指针变量paf88f8af8cf868.5函数之间地址值的传递(p100)特点:共享内存,“
6、双向”传递swap(intx){x=9;}main(){inta;scanf("%d",&a);swap(a);printf("%d",a);}例1值传递运行结果:5#includeswap(int*p1){*p1=9;}main(){inta;int*po1;scanf("%d",&a);po1=&a;swap(po1);printf("%d",a);}例2运行结果:9地址传递运行结果:5例3swap(int*p1){intb=9;p1=&b;}main(){inta;int*po1;scanf("%d",&
7、a);po1=&a;swap(po1);printf("%d",*po1);}地址传递swap(intx,inty){intt;t=x;x=y;y=t;}main(){inta,b;int*po1,*po2;scanf("%d,%d",&a,&b);po1=&a;po2=&b;if(a
8、;scanf("%d,%d",&a,&b);po1=&a;po2=&b;if(a