下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章(二维数组)A:二维数组定义1定义语句形式:类型名 数组名 常量表达式1常量表达式2如:int a34;(可看成一个矩阵)在内存中存放顺序为:先放0行,再放1行的元素。2在C语言中,可把二维数组看成一个一维数组,每个数组元素又包含有若干个元素的一维数组。3C语言系统把a0、a1、a2作为数组名处理的。B、二维数组元素的引用引用形式:数组名 下标表达式1下标2要求:(1)下标值必为整数 (2)下标不能越界C、二维数组初始化 如:int a43=1,2,3,.1当某一对花括号内的初值个数少于该行中元素的个数时,系统自动给该行后面的元素补初值0如:int a43=1,2,4,5,7,10;a0
2、2,a21的初值为03所赋初值行数少于数组行数时,系统自动给后面各行元素补初值04赋初值时省略花括号时 如:int a43=1,2,4,5;依照在内存中排列顺序,不足补0a00=1 a01=2 a02=4 a10=5 a11 a12a20 a21 a22 a30 a31 a32D、通过赋初值定义二维数组大小1、对于二维数组,只可省略第1个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式(牢记)。如:书上125页2、当用下列形式赋初值时:int c3=1,2,3,4,5;第一维大小按以下规定:(1)当初值的个数能被第二维的常量表达式除尽时;所得商就是第一维大小(2)当初值的个数不能被第
3、二维常量表达式除尽时,则:第一维大小:所得商+1 上面:5/3=商1余2 +1=2E、二维数组定义和数组元素引用举例(见书126页)F、二维数组和数组元素地址(1)二维数组a由若干一维数组组成,(2)a0、a1、a2都是一维数组名,也是一个地址常量,不能a0+等如定义*p aI p=aI 合法 aI=*(a+I) p=*(a+I)合法(3)二维数组名也是一个地址常量 (行指针)(4)数组名a与a0的值相同,但基类不同,数组名a基类为具有4个整型元素的数组类型。 a+1中1的单位应当是4*2个字节,而不是2个字节。(5)p=a是不合法的,因为p和a基类不同,也不可a+,aG、二维数组元素地址AI
4、j地址的5种表达式:(1)&aIj (2)aI+j (3)*(a+I)+j (4)&a00+4*I+j (5)a0+4*I+j&a00+4*I+j不可写成a+4*I+j 因为基类不同,a是行指针H、通过地址引用二维数组元素,若 int a34,I,ja数组元素可用以下5种表达式引用(1)aIj (2)*(aI+j) (3)*(*(a+I)+j) (4)(*(a+I)j(5)*(&a00+4*I+j)注意:128页第一段I、通过建立一个指针数组引用二维数组元素Int *p3,a32,I,j(优先于*号,因此p是一个数组名,数组p是指针类型,它每个元素都是基类为int的指针,共有3个元素)pI=a
5、I是合法的具体见128页图9.6指针数组p引用a数组元素如下:(1)*(pI+j) *(aI+j)(2)*(*(p+I)+j) *(*(a+I)+j)(3)(*(p+I)j (*(a+I)j(4)pIj aIjJ、通过建立一个行指针引用二维数组元素,有int a32,(*prt)2(*prt)2中,先(*prt)说明prt是一个指针变量,然后再与2结合,说明指针变量prt的基类是一个包含有两个int元素的数组,这里prt基类与a相同,prt=a合法。当prt指向a数组开头时,有以下形式引用aIj(1)*(prtI+j) (2)*(*(prt+I)+j) (3)(*(prt+I)j (4)prt
6、IjF、二维数组名和指针数组作实参(1) 当二维数组作实参时,对应形参必须为行指针变量。对应fun函数首部可有以下三种形式:(1)fun(double (*a)I)(2)fun(double a N)(3)fun(double amN)(2)当指针数组作为实参时,对应形参应是一个指向指针的指针。其有以下三种形式(1)fun(double *am) (2)fun(double *a)(3)fun(double *a)特别说明:二维数组名指向行 一维数组名指向列(1) 列地址 如:a1, a2(2) 行地址 (二维数组名)(1)在指向行的地址前面加一个“*”,就转换为列的地址(2)反之,在指向列的
7、指针前面加“&“,就成为指向行的指针如:&a0 等价&*a表示形式含义a二维数组名,指向一维a0,即0行首地址A0,*(a+0),*a0行0列元素地址,(列地址)A+1,&a11行首地址(行地址)A1,*(a+1)1行0列元素的地址(列地址)A1+2,*(a+1)+21行2列元素地址(列地址)*(*(a+1)+2),a121行2列元素的值第10章 (字符串)A、 用一维字符数组存放字符串(1)0作为标志占用存储空间,但不计入串的实际长度(2)C语言中,字符串常量被隐含处理成一个以0结尾的无名字字符一维数组,所以: char *sp,s10 s=”Hello!”;(不合法) sp=”Hello!
8、” (合法)因为字符串常量在赋值时,给出的是此字符串在内存中所占的连续存储单元的首地址,而s是常量,不可赋值B、通过赋初值的方式给一维字符数组赋字符串(1)记住:如字符数组作字符串使用时,数组大小应比实际字符串多一个元素C、通过赋初值方式使指针指向一个字符串 如:char *ps1=”form one”;D、字符串输入输出(1)如:scanf(“%s”,str_adr) 其中str_adr可以是:字符数组名,字符数组元素地址或字符指针变量(2)用%s输入时,空格,回车键都作为分隔符,而不能被读入 (3)当输入项是数组元素的地址时,输入的字符将从这一元素开始,依次存放在该数组中。 (4)当输入项为字符指针时,该指针必须已指向确定的有足够空间的连续存储单元 (5)在 printf函数中使用%s,可以实现字符串的整体输出。 如: printf(“%s”,str_adr) printf函数将从这一地址开始,依次输出字符。E、gets, 读入时包括空格,到换行符为止,系统自动用0代替 Puts差不多F、用于字符串处理的函数(1) stcpy(s1,s2) 返回s1值(即目的的首地址)(2)strcat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茔地征收协议书
- 战争保密协议书
- 幼儿合伙协议书
- 征集档案协议书
- 药房合股协议书
- 战队解除协议书
- 药店陈列协议书
- 襄阳就业协议书
- 赞助推广协议书
- 装修整改协议书
- 放弃经济补偿协议书
- 运动控制系统安装与调试(第2版)习题及答案汇 甄久军 项目1-5
- 部编版九年级语文上册教科书(课本全册)课后习题参考答案
- 二零二五年度个人住房贷款展期协议书3篇
- 通信工程建设标准强制性条文汇编(2023版)-定额质监中心
- 大数据与会计专业实习报告个人小结
- 人工智能原理与方法智慧树知到期末考试答案章节答案2024年哈尔滨工程大学
- DB34-T 4704-2024 托幼机构消毒技术规范
- GB/T 10599-2023多绳摩擦式提升机
- 高速铁路线路轨道设备检查-静态检查
- GB/T 43309-2023玻璃纤维及原料化学元素的测定X射线荧光光谱法
评论
0/150
提交评论