zoukankan      html  css  js  c++  java
  • C二维数组行为空,列不为空

    二维数组:

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

    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[*][*]);//正确  省略了维数参数的名称

        

    tianjiale菜鸟名企梦
  • 相关阅读:
    poj2240
    poj1135
    poj1062
    poj3278
    2218 补丁vs错误
    必做: 1041、1024、1077、2218、1183(较难)
    poj2828
    poj3253
    洛谷P1122 最大子树和
    1074 食物链
  • 原文地址:https://www.cnblogs.com/tianjiale/p/9902179.html
Copyright © 2011-2022 走看看