码迷,mamicode.com
首页 > 编程语言 > 详细

C二维数组行为空,列不为空

时间:2018-11-03 23:09:45      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:define   声明   style   处理   str   列表   ret   def   code   

二维数组:

处理二维数组得函数有一处可能不太容易理解:数组的行可以在函数调用时传递,但是数组的列却只能被预置在函数内部。

eg:

 1 #define COLS 4
 2 int sum(int ar[][COLS],int rows){
 3     int r ;
 4     int c;
 5     int tot=0;
 6     for(r=0;r<rows;r++)
 7         for(c=0;c<CLOS;c++)
 8             tot+=ar[r][c];
 9             return tot;
10 }

:系统可以根据初始化的数据个数和第2维的长度可以确定第一维的长度。

eg:    int a[ ][3]={ 1,2,3,4,5,6};

数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2。

一般,省略第一维的定义时,第一维的大小按如下规则确定:初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则第一维的大小为商再加1。

 


 

 

变长数组:变长数组必须是自动存储类的,这意味着它们必须在函数内部或作为函数参量声明,而且声明时不可以进行初始化。

注意:“变”并不表示在创建数组后,可以修改其大小。变长数组的大小在创建后就是保持不变的。“变”,是指其维度大小可以用变量来指定。

 

代码声明规范:

      int sum2d(int rows,int cols,int ar[rows][cols])//正确

      int sum2d(int ar[rows][cols],int rows,int cols)//顺序不正确,因为ar的声明中使用了rows cols,所以在参量列表中,他们两个声明需要早于ar.

      int sum2d(int ,int ,int ar[*][*]);//正确  省略了维数参数的名称

    

 

C二维数组行为空,列不为空

标签:define   声明   style   处理   str   列表   ret   def   code   

原文地址:https://www.cnblogs.com/tianjiale/p/9902179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!