- 1、本文档共75页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
福大计算机2级c语言课件第6章
§6.1 §6.2
(一)变量的指针(即地址) 、指向变量的指针变量
存储在内存储器中的每个数据都是用若干个单元(字节)存放。
如一个int型数据占2个单元
为能访问这些内存单元,我们给每个内存单元编号。内存单元的编号称为地址。
变量的指针:存储变量值——一个数据的若干个单元的首地址(其中第一个单元的地址) ;例1:?
int j=153;
char c=’A’;
long m=72561;
j的指针为2000
c的指针为2002
m的指针为2003;指向变量的指针变量
例1
int j=153;
char c=’A’;
long m=72561;;注意:
变量的指针与指针变量的区别:
变量的指针:本变量的地址
指针变量:一个变量、此变量是用来存放另一个变量的指针、不是用来存放一个数据;一.定义指针变量:与以前学的普通变量一样,但变量名前加一个*
例如: int a,b,*p,x;
char *w,c1,c2;
定义p为指向int型变量的指针变量、
w为指向char型变量的指针变量
注意:一个指针变量只能指向所定义的类型变量,如w只能指向char型变量,不能时而指向一个char型变量,时而又指向一个float型变量。
至于p、w究竟指向哪一个变量,取决于向p、w赋予的地址。;二、指针变量初始化和赋值:
指针变量同普通变量一样,使用之前不仅要定义,而且必须赋予具体的值。指针变量的赋值只能赋予指针(地址),决不能赋予任何其它数据。
int j=153 , k=-42 ,*p=j ,*q;
q=k;
定义p与q为指针变量
(可认为*p与*q为int型变量); ;三.用指针变量表示其所指向的变量
即通过指针变量间接访问其所指向的变量
*:称指针运算符或 “间接访问” 运算符。
若有 int *p,j; p=j;
即 p指向j
则 *p表示指针变量p所指向的变量 j ;int i,j,*p1,*p2;
i=a;
j=b;
p1=i;
p2=j;
如右上图所示
接着执行
p2=p1;
使p2与p1都指向i,
此时*p2与*p1都
等价于i,;若执行
*p2=*p1;
即执行
j=i;
(表示把p1指向的变量i中的内容赋给p2所指向的变量j中);指针变量可出现在表达式中
设int x,y,*px=x;
指针变量px指向变量x,则*px可出现在x能出现的任何地方。例:
y=*px+5;?表示y=x+5;
y=++*px;? 相当于y=++(*px);
或相当于y=++x;
y=*px++;?相当于y=*(px++);
或相当于y=*px;px++;
或相当于y=x; px++; ; 四、若指针变量p指向普通变量j
(即p=j)
则有
1、*j ——*(j) ——*p——j
2、*p——(*p)——j——p
*j 无意义;main( )
{float a,b,*p,*q,*t;
p=a;q=b;
a=12.8;b=-6.1;
t=p;p=q;q=t;
printf(”(1)%f,%f\n”,a,b);
printf(”(2)%f,%f\n”,*p,*q);};10.1输入3个整数,按由小到大顺序输出
main() 下面程序的方法由下一页图所示
{ int a,b,c,t ;
scanf(”%d%d%d”,a,b,c);
if(ab){ t=a;a=b;b=t;}
if(ac){ t=a;a=c;c=t;}
if(bc){ t=b;b=c;c=t;}
printf(”%d,%d,%d\n”,a,b,c);
}
;14;main() 下面程序的由下一页图所示
{ int a,b,c,*t,*pa=a,*pb=b,*pc=c;
scanf(”%d%d%d”,pa,pb,pc);
if(*pa*pb)
{t=pa;pa=pb;pb=t;}
if(*pa*pc)
{t=pa;pa=pc;pc=t;}
if(*pb*pc)
{t=pb;pb=pc;pc=t;}
printf(”%d,%d,%d\n”,
*pa,*pb,*pc);};14;(二)一维数组元素的
指针、指向数组元素
的指针变量
文档评论(0)