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菜鸟名企梦
  • 相关阅读:
    request.getParameterMap 跟request.getParameter区别
    SQL语句中---删除表数据drop、truncate和delete的用法
    今日出现两个错误
    html和jsp的区别及优缺点
    怎么将 美国的日期格式改成中国的日期格式
    java web相关的面试题
    i++与++i的关系
    Oracle常见的语法,以及跟MySQL的区别
    DBA
    java基础之印象笔记
  • 原文地址:https://www.cnblogs.com/tianjiale/p/9902179.html
Copyright © 2011-2022 走看看