c语言形参变量为二维数组时,第C语言习题-九章(二维数组)第10章

《第C语言习题-九章(二维数组)第10章》由会员分享,可在线阅读,更多相关《第C语言习题-九章(二维数组)第10章(4页珍藏版)》请在人人文库网上搜索。

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、二维数组元素地址AIj。

4、地址的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=aI。

5、是合法的具体见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)prtI。

6、jF、二维数组名和指针数组作实参(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,s10s=”Hello!”;(不合法)sp=”Hello!” (合法)。

8、因为字符串常量在赋值时,给出的是此字符串在内存中所占的连续存储单元的首地址,而s是常量,不可赋值B、通过赋初值的方式给一维字符数组赋字符串(1)记住:如字符数组作字符串使用时,数组大小应比实际字符串多一个元素C、通过赋初值方式使指针指向一个字符串 如:char *ps1=”form one”;D、字符串输入输出(1)如:scanf(“%s”,str_adr)其中str_adr可以是:字符数组名,字符数组元素地址或字符指针变量(2)用%s输入时,空格,回车键都作为分隔符,而不能被读入(3)当输入项是数组元素的地址时,输入的字符将从这一元素开始,依次存放在该数组中。(4)当输入项为字符指针时,该指。

9、针必须已指向确定的有足够空间的连续存储单元(5)在 printf函数中使用%s,可以实现字符串的整体输出。如: printf(“%s”,str_adr)printf函数将从这一地址开始,依次输出字符。E、gets, 读入时包括空格,到换行符为止,系统自动用0代替Puts差不多F、用于字符串处理的函数(1) stcpy(s1,s2) 返回s1值(即目的的首地址)(2)strcat(s1,s2) (自动覆盖s1串末的0,并返回s1所指地址值)(3)strlen(s) (求串长,但不包括0)(4)strcmp(s1,s2) (字符串大小依据ASCII的值由s1和s2中对应的字符两两进行比较,当第一对不相同的字符时,即由这两个字符出现,决定所在串的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值