指针顺序程序设计上传本详解演示文稿_第1页
指针顺序程序设计上传本详解演示文稿_第2页
指针顺序程序设计上传本详解演示文稿_第3页
指针顺序程序设计上传本详解演示文稿_第4页
指针顺序程序设计上传本详解演示文稿_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指针顺序程序设计上传版本详解演示文稿当前1页,总共23页。(优选)指针顺序程序设计上传版本当前2页,总共23页。初等运算符单目运算符算术运算符关系运算符逻辑运算符赋值运算符逗号运算符低高>位运算符条件运算符当前3页,总共23页。指针指针变量定义赋值使用特例内存地址&与*操作符直接访问间接访问当前4页,总共23页。变量与地址程序中:inti;

floatk;

内存中每个字节有一个编号-----地址……...2000200120022005内存020032004200620072008ik

编译或函数调用时为其分配内存单元当前5页,总共23页。…...…...2000200420062005整型变量i10变量i_pointer20012002200320072008指针与指针变量指针:一个变量的地址指针变量:专门存放变量地址的变量叫~2000指针指针变量

变量的内容

变量的地址指针变量变量变量地址(指针)变量值指向地址存入指针变量当前6页,总共23页。指针变量的定义格式:[存储类型]数据类型*指针名;合法标识符指针变量本身的存储类型指针的目标变量的数据类型表示定义指针变量不是‘*’运算符例int

*p1,*p2;float*q;staticchar*name;注意:1、int*p1,*p2;

与int*p1,p2;2、指针变量名是p1,p2,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针变量定义后,变量值不确定,应用前必须先赋值当前7页,总共23页。赋给指针变量,不是赋给目标变量例inti;int*p=&i;变量必须已说明过类型应一致例

int*p=&i;

inti;例inti;int*p=&i;int*q=p;用已初始化指针变量作初值例

main(){inti;staticint*p=&i;..............}()不能用auto变量的地址去初始化static型指针指针变量的赋值

指针名=地址值;例charch;int*p=&ch;当前8页,总共23页。例main(){inti=10;int*p;

*p=i;printf(“%d”,*p);}危险!例

main(){inti=10,k;int*p;

p=&k;*p=i;printf(“%d”,*p);}指针变量必须先赋值,再使用…...…...2000200420062005整型变量i10指针变量p200120022003随机当前9页,总共23页。&与*运算符含义含义:取变量的地址单目运算符优先级:2结合性:自右向左含义:

取指针所指向变量的内容单目运算符优先级:2结合性:自右向左两者关系:互为逆运算理解200010i_pointer*i_pointer&i_pointerii_pointer&i&(*i_pointer)i*i_pointer*(&i)i_pointer

=

&i

=

&(*i_pointer)i=*i_pointer=*(&i)…...…...2000200420062005整型变量i10变量i_pointer2001200220032000指针变量i_pointer-----指针变量,它的内容是地址量*i_pointer----指针的目标变量,它的内容是数据&i_pointer---指针变量占用内存的地址当前10页,总共23页。直接访问与间接访问直接访问:按变量地址存取变量值间接访问:通过存放变量地址的变量去访问变量例

i=3;-----直接访问指针变量…...…...2000200420062005整型变量i10变量i_pointer20012002200320003例*i_pointer=20;-----间接访问20当前11页,总共23页。指针变量…...…...2000200420062005整型变量i10变量i_pointer2001200220032000整型变量k例

k=i;--直接访问

k=*i_pointer;--间接访问10例

k=i;k=*i_pointer;当前12页,总共23页。零指针与空类型指针零指针:(空指针)定义:指针变量值为零表示:int*p=0;

p指向地址为0的单元,系统保证该单元不作它用表示指针变量值没有意义#defineNULL0int*p=NULL:p=NULL与未对p赋值不同用途:避免指针变量的非法引用在程序中常作为状态比较

例int*p;......while(p!=NULL){...…}void*类型指针表示:void*p;使用时要进行强制类型转换例char*p1;void*p2;p1=(char*)p2;p2=(void*)p1;表示不指定p是指向哪一种类型数据的指针变量当前13页,总共23页。例输入两个数,并使其从大到小输出main(){int*p1,*p2,*p,a,b;scanf("%d,%d",&a,&b);p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("a=%d,b=%d\n",a,b);printf("max=%d,min=%d\n",*p1,*p2);}运行结果:a=5,b=9max=9,min=5…...…...指针变量p1

指针变量p20002008200220042006

指针变量p2

整型变量b

整型变量a5200692008200620082006当前14页,总共23页。第3章顺序程序设计学习要点:算法的概念和特点算法的表示方式顺序程序设计当前15页,总共23页。算法例3.1100个学生,要求将他们之中成绩在90分以上的打印出来。假定用n表示学生学号,ni表示第i个学生学号;g表示学生成绩,gi表示第i个学生成绩;则算法可表示如下:step1:1→i;step2:如果gi≥90,则打印ni和gi,否则不打印;step3:i+1→i;step4:若i≤100,返回step2,否则,结束。序号(i)学号(n)成绩(g)1n1g12n2g2………………inigi当前16页,总共23页。有穷性:所有步骤有限。确定性:每一个步骤应清晰界定操作。有效性:每一个步骤应有效执行,并得到确定结果。有零个或多个输入。有一个或多个输出。算法的特性:当前17页,总共23页。常用三种描述方法:

算法的描述方法:自然语言描述流程图描述伪代码描述当前18页,总共23页。setp1、1->isetp2、0->sumsetp3、sum+i->sumsetp4、i+1->Isetp5、若i<=n,返回setp3,否则,输出sum,结束sum=1+2+3+4+……+(n–1)+n优点:接近自然语言,方便掌握。缺点:1、对于稍复杂的结构很难表述清楚 2、容易造成歧义当前19页,总共23页。常用符号:流程图输入输出框起止框一般处理框判断框流程线连接点当前20页,总共23页。sum=1+2+3+4+……+(n–1)+n开始输入ni=1,sum=0i<=nsum=sum+Ii=i+1输出sum结束是否当前21页,总共23页。当前22页,总共23页。优点:直观形象,比较清楚的显示出各个框之间的逻辑关系。无论是使用自然语言还是使用流程图描述算法,仅仅是表述了编程者解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论