C程序第8章.docx

上传人:b****5 文档编号:5930513 上传时间:2023-01-02 格式:DOCX 页数:4 大小:15.78KB
下载 相关 举报
C程序第8章.docx_第1页
第1页 / 共4页
C程序第8章.docx_第2页
第2页 / 共4页
C程序第8章.docx_第3页
第3页 / 共4页
C程序第8章.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C程序第8章.docx

《C程序第8章.docx》由会员分享,可在线阅读,更多相关《C程序第8章.docx(4页珍藏版)》请在冰豆网上搜索。

C程序第8章.docx

C程序第8章

第8章地址和指针

1、变量的地址

举例:

inta;

inta;的功能是定义一个整型变量a,变量a的房子大小是4个字节大小,变量a的房子里可以住一个整数。

a房子形如以下所示:

001

002

003

004

总结:

变量的地址是指该变量所占存储单元的第一个字节的地址。

也就是整个房子的地址是第一个房间的房间号。

所以变量a的地址为001。

2、指针变量

举例:

inta;

int*p;

floatc;

⑴指针变量的房子也是4个字节大小,房子里住的不是实际的数据,而是地址。

不是所有的地址都可以住进去,只有同类型的简单变量的地址,才可以放到同类型的指针变量里。

⑵指针变量p中可以存放变量a的地址值,但是不可以存放变量c的地址值,因为只有同类型的简单变量的地址,才可以放到同类型的指针变量里。

⑶如何定义指针变量?

一般形式:

类型名*指针变量名

举例:

int*pi,*pj;

double*pd;

总结:

①指针变量定义中的*号必不可少。

②int*pi,*pj;中的int是指针变量pi和pj的基类型,它决定了只有int类型的简单变量的地址值才能放到指针变量pi和pj中。

3、二级指针、一级指针和简单变量的关系

举例:

int**p,*s,k=20;

s=&k;

p=&s;

总结:

⑴用两个*号定义的变量叫二级指针变量,用一个*号定义的变量叫一级指针变量。

⑵二级指针变量里存放同类型的一级指针变量的地址,一级指针变量里存放同类型的简单变量的地址。

⑶&是求地址运算符,它是单目运算符,操作数出现在&的右边。

如:

s=&k;功能是求出简单变量k的地址,并且把k的地址放到指针变量s的房子里。

4、指针移动和基类型的关系

举例:

int*p,a,b;

p=&a;

a

b

P→

 

请问p+1后,指针p是指向了变量a的第二个字节,还是指向了变量b的第一个字节?

答案是指向了变量b的第一个字节。

p+1不是指针移动一个字节,而是移动一个存储单元,一个存储单元多大,取决于指针变量在定义时所用的关键字,如本题中的int*p,因为指针变量p是用int定义的,所以一个存储单元的长度就是4个字节大小,故p+1才会指向变量b的第一个字节。

如果这样定义:

double*p;

那么p+1后,指针变量p移动几个字节?

5、给指针变量赋值(3个方法)

⑴通过求地址运算符(&)赋值

intk=1,*p;

p=&k;

 

⑵通过指针变量赋值

intk=1,*p,*q;

p=&k;

q=p;

程序段的功能是:

把k的地址赋给指针变量p,然后再通过指针变量p把k的地址赋给指针变量q,最终结果是让p和q都指向了变量k。

⑶通过标准函数赋值(详见13章)

6、&和*的区别

⑴&:

求地址运算符,后跟一个变量,功能是求出改变量的地址值。

如:

&a,但是&后不能跟表达式和常量,如:

&2、&(k+1)都是不合法的,也就是说,&后只能跟一个变量。

⑵*:

间址运算符,后跟一个指针变量,目的是引用该指针所指向的房子。

举例:

int*p,i=10,j;

p=&i;

j=*p;

j=*(&i);

分析:

1j=*p;等价于j=i;

2j=*(&i);等价于j=i;因为&和*是互逆操作,同时出现相互抵消。

3切记:

&后只能跟简单变量名,而*后只能跟指针变量名。

例8.1

用指针指向两个变量,通过指针运算选出值小的那个数。

#include

main()

{inta,b,min,*pa,*pb,*pmin;

pa=&a;

pb=&b;

pmin=&min;

scanf(“%d%d”,pa,pb);

printf(“a=%db=%d\n”,a,b);

*pmin=*pa;

if(*pa>*pb)

*pmin=*pb;

printf(“min=%d\n”,min);

}

解析:

⑴pa=&a;功能是把变量a的地址放到指针变量pa中,也就是让指针pa指向了变量a。

⑵*pmin=*pa;等价于min=a;*pa>*pb等价于a>b,*pmin=*pb;等价于min=b。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1