第04章C数组与指针

上传人:功*** 文档编号:252250761 上传时间:2024-11-14 格式:PPT 页数:15 大小:783.50KB
返回 下载 相关 举报
第04章C数组与指针_第1页
第1页 / 共15页
第04章C数组与指针_第2页
第2页 / 共15页
第04章C数组与指针_第3页
第3页 / 共15页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,JAVA语言讲义,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,JAVA语言讲义,*,1,第四章 数组与指针,4.1 数组的概念与声明,4.1.1 数组的概念,数组是一个由类型相同的变量组成的线性序列。概念上,它如,同代数中的向量:,(a,1,a,2,.,a,n,),。,4.1.2 数组的声明,与简单变量一样,在使用前必须声明之。其声明形式如下:,int a10;/声明 a 是一个长度为10的整型数组,a是数组名;,数组a中元素的变量名以及它们的存储空间情况,如下所示:,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,2,说明:,(1)数组中各元素的下标是从,0 n-1。即它们的变量名依次为:,a0、,a1、,a2、,a3、,a4、,a5、,a6、,a7、,a8、,a9;,通常,它们也被称为,“,下标变量,”,。,(2)数组中各元素所占用的存储单元,它们的地址是连续的(即地,址相邻)。如下所示:,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,+1,+2,+3,+4,+5,+6,+7,+8,+9,变量名:,地 址:,3,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,1,2,3,4,5,6,7,8,9,10,4.1.3 数组的初始化,是指:在数组声明时为其中所有的下标变量赋值。,int a10=1,2,3,4,5,6,7,8,9,10;,说明:,初始化的几种形式(参见,P.75),4,4.1.4 下标变量的引用,下标变量可以像简单变量一样地被使用,而且,元素的下标可以是,常量、变量、表达式。,例如:,ai=ai-1+1;,cinai;,coutai;等等。,注意:,引用数组名将表示对数组进行整体操作,除非作为,函数的参数或字符串时,否则,其他情况下,必须以引,用下标变量的方式来处理数组(如:赋值、输入、输出,等等操作)。,5,4.1.5 数组的基本操作,参见P.76,(1)数组元素的输入,(2)数组元素的输出,(3)数组元素的求和,(4)求数组中的最小(大)元素的值,(5)求数组中的最小(大)元素的下标,6,4.1.6 数组的应用,数组主要用于存放并且处理一组类型相同的数据。,如:排序、检索等操作。,参见P.77/【例】4.3、4.4;,P.95/【例】4.13-4.14;,7,例,4,-,1,一维数组的排序(非递减),。,void main(,),int a,=79,97,68,77,89,84,62,55,78,98,79,67,85,71,65,80,100;,int i,j,k,x,temp,len,;,len=sizeof(a)/sizeof(int);,for(i=0;i,len-1,;i+)/,该排序法被称为“选择排序”法,x=ai;k=i;,for(j=i+1;jx)x=aj;k=j;,temp=ai;,/ai与ak交换值,ai=ak;,ak=temp;,for(i=0;ilen;i+),cout,a i,t;,sizeof是运算符,其语法形式:,sizeof(数组名或变量名或类型名),运算结果为该数组或变量或类型所占内存的字节数。,8,例,4,-,2,对一,批,学生的百分制成绩,统计出,其中,100分、9099分、8089分、,09分的人数。,#define NUM 20,void main,(,),int score,NUM,;,/声明成绩数组score,int counter,11,;/,/声明,计数器,数组counter,int i;,srand(,(unsigned)time(NULL),);,for(i=0;iNUM;i+),scorei,=(int)(rand()%101),;,/利用随机函数产生成绩,for(i=0;i,11,;i+)counteri=0;,/计数器数组counter置0,for(i=0;i,NUM,;i+)counter,scorei/10+;/,利用,counter,数组,计数,for(i=0;i,11,;i+),if(i!=10),cout,(i*10),-,(i*10+9),:,counter i,endl,;,else,cout,(i*10),:,counter i,endl,;,9,课外练习,关于一维数组,(1),阅读理解程序,P.76基本操作;,P.77/【例】4.3、4.4;,P.95/4【例】4.134.14;,(2),参见P.100,三、程序填空/1、2、3、5;,(3)编程序:,将一个已知数组a中的元素颠倒存放。,例如,原来为:(a1,a2,a3,a4,an),,处理后为:(an,an-1,a3,a2,a1)。,(4)编程序:输入n(n可变,但不超过20)个整数,输出它们的平均值以及所有超过平均值的数。,10,4.2 二维数组的概念与声明,4.2.1 二维数组的概念,4.2.3 二维数组的声明,4.2.6 二维数组的基本操作,课外练习:p.104/四-1.,4.2.3 二维数组的声明,参见P.80,4.2.4 二维数组的内存情况,4.2.5 二维数组的初始化,11,4.3 字符数组与字符串,“字符串的内存情况”、“,处理,字符串的库函数”参见P.84,课外练习,参见P.100,二、读程序,写运行结果/2.,12,4.4 指针及其与数组的关系,4.4.4 指针与数组,参见P.87,4.4.1 指针的概念,参见P.35,4.4.2 指针的运算,4.4.3 利用指针动态申请和释放内存空间,运算符new与delete,4.4.5 指针与字符串,参见P.92,13,关于指针的一些说明及例子,若有以下变量声明:int a=2,*p=&a;则两者的物理关系如下所示:,2,p,a,3f00e0,2,p,变量名:a,地址值:3f00e0,变量值:2,由于变量的地址值(&变量名)具体是多少,对程序而言,通常是无关紧要的。因此,两者的关系可以简单表示为:,14,p,a,1,称为p指向a,若有下面语句:,int a=1,*p;,p=,int a=1,*p=,等价与,则它们的物理关系可以如下图所示:,若接着执行下面语句:,a=2;,*p=3;,2,p,a,3,p,a,若接着执行:,couta=aendl;,cout*p=*pendl;,则输出:,由此可见,这时的*p与a,是等价的它也可以作为,变量a的“名字”来使用!,a=3,*p=3,进一步而言,由于指针p也是变量,因此我们还,可以如下定义另一个指向指针变量p的指针变量q:,int *q=,这时,由于*q与p等价,因此*q 与*p、a就都是等价的了它们都可以作为变量a的“名字”来使用!,q,3,p,a,切记:,每当一个指针(p)指向一个变量(a)时,*指针名(*p)就相当于该变量(a)的一个,“,别名,”,也叫做:,通过指针(p)间接访问变量(a),!,15,pa,a,1,为什么声明指针时需要指定类型呢?而指针的类型又有什么作用呢?,我们来看下面的情况:,int a=1,*pa=,char ch=A,*pch=,pch,ch,A,pa,fa30,fa31,fa32,fa33,pch,fd60,fd61,在前面我们已经知道,指针pa、pch的值分别是变量a、ch的,首地址,而已,。那么每当遇到*pa、*pch时,系统是如何知道,pa指向的变量占用了4个字节、而pch指向的变量只占用了2,个字节呢?.这就是为什么声明指针时需要指定类型!,变量占用的字节地址,a,ch,切记:,每个指针可以指向相同类型的任何变量,但决不允许指向不同类型的变量!如:,int a,b,*p;,char ch;,p=/此时,p指向a,p=/现在,p指向b,p=/错误!不能指向ch,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!