第十章 数组和指针(函数和二维数组,本章个人总结)总结 140520

 函数和二维数组: 

处理二维数组的方法两种:一种是把处理一维数组的函数应用到二维数的每一行但是这样作无法知道行与列的信息,所以我们应使用如“程序清单中的void sum_rows  (int ar [] [COLS ], int rows)这样的声明函数” 当且公仅当ar是函数的形参时也可这样声明 :void sum_rows  (int (*ar) [COLS ], int rows)。注意第一个括号里是空的,这个括号表示ar是一个指针 ,这个函数用一个for循环处理外层(行号)用另一个for 循环处理内层(一行中所有元素),而且列数在函数体内定义的,但是行数靠函数传递得到的。个人理解是:如果要使用函数的方法来处理二维数组时在指针形参声明指向 数据类型的个数即为数组中的行数  需要注意的是在声明指针形参时只能前面的方括号是空的后面都要填数字。如int sum2 (int  ar [][], int rows);这样声明产错误的,因为ar不知道要指向几个int数据类型。如:int sum2(int ar [][4], int rows);  就表示ar指向4个int值构成的数组, 也可以在前面的方括号中加上数值,这样作是合法声明,但是编译器将忽略它,如: int sum2 (int ar [3][4], int rows );因为前面的方括号只用来表示ar是一个指针 ,它不管里面是否有值。

变长数组:

         略过:变长数组中变并不表示在创建数组还可以修改它的大小,变是意思是说其维大小可以用变量来指定。

个人章总结:

     数组:线性存储同一数据类型元素的数据类型。通过使用索引来访问其数值。而它的索引是从0开始结束于索引值减1.声明方法:一维数组的声明形式为:type name [size]; type指来数组内每个元素的数据类型。name 数组名,同是也是首个元素的地址(name [0]).size指出name数组中元素的个数,在传统C中要求size只有是常量或常量表达式。二维数组的声明形式和一维的差不多。type name [size1][size2] 这里我解释name 和size1和size2. name 同样是数数组名,同样是第一个元素的地址,但是第一个元素中有又包含了两数组,因此它是整个数据类型大小对象的地址。同name[0]同name [0][0]地址。size1第一维索引的长度(即行数),size2第二维索引的长度(即列数),可以把二维数组想象成一个exel表格。一维数组和二维数组初始化差不多只是二维数组初始化时每一组最好用大括号括起来,注意不要忘记大括号后逗号,用以避免少输一个值导致把其他组值不对。一维数组初始化:int name [size] = { num, ...}; 二给数组初始化 int name [size1][size2] == {{num, ... }, {num2, ...}, ....};  .c 不支持把一整个数组整体进行赋值,也不支持用大括号括起来的列表方试赋值(在这里要注意区分初始与赋值,初始化时在数组名前面有数据类型,而在使用时赋值没有数据类型)指针 :其数值为地址的变量。因为指针的值是地址的变量,而数组名又是第一个元素的地址,所以可以把数组名直接赋值给指针变量。但前提是两都的数据类型要相同。指向多维数组的指针声明:type (*name) [size];type 即为指针的数据类型。name 即为指针名,size数组维数(即数组行数),从指针中加减一个整数过程是将这个整数和指针的数据类型的字节相乘,然后所得的结果会加减到初始地址上。






数组图解:








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值