2017-04-12 5 views
-1

基本的に、配列を関数に渡すときに配列を型として宣言するには、次のようなコードを とします。2d配列を関数に渡すときに2d配列を型として宣言する理由と、その型に行と列を含める理由は何ですか?

const int MAX_ROWS = 10; 
const int MAX_COLUMNS = 5; 
typedef char ItemType; 

typedef char TwoDType[MAX_ROWS][MAX_COLUMNS]; 

void SetSomeVals(TwoDType twoDimAry, int rowsUsed, 
       int num, ItemType initialValue); 

なぜ型に行と列も含まれていますか?

+1

あなたがしたくない場合は、必要はありません。 – DeiDei

+0

使いやすいように['boost :: numeric :: ublas'](http://www.boost.org/doc/libs/1_63_0/libs/numeric/ublas/doc/index.html)を使うことができますC++の行列 –

答えて

0

なぜ型に行と列も含まれていますか?

あなたはそうである必要はありません。あなたが使用することができます。

const int MAX_ROWS = 10; 
const int MAX_COLUMNS = 5; 

typedef int TwoDType[][MAX_COLUMNS]; 

プログラム例:

#include <iostream> 

const int MAX_ROWS = 10; 
const int MAX_COLUMNS = 5; 

typedef int TwoDType[][MAX_COLUMNS]; 

int main() 
{ 
    TwoDType a1 = {{10}, {20}}; 
    std::cout << a1[0][0] << " " << a1[1][0] << std::endl; 
    std::cout << sizeof(a1) << std::endl; 

    TwoDType a2 = {{10}, {20}, {40}}; 
    std::cout << a2[0][0] << " " << a2[1][0] << " " << a2[2][0] << std::endl; 
    std::cout << sizeof(a2) << std::endl; 
} 

出力

10 20 
40 
10 20 40 
60 

を行と列の両方を指定することで、固定サイズの配列であることをTwoDTypeを作っています。

関連する問題