2013-07-21 70 views
9

Cで2次元配列をtypedefする方法はありますか?次のようなものがあります。Cの2次元配列のtypedef

typedef char[10][10] board; 

この例はコンパイルされません。それを行う方法はありますか?または他の解決策?

+2

あなたは試しましたか?typedef char board [] [10]; ? –

+1

'board'という変数を2D配列としてどのように定義しますか?答え: 'char board [10] [10];'。変数の代わりにtypedef 'board 'を作成するには、' storage class '' typedef'を使用してください: 'typedef char board [10] [10];'次に、 'board b1、b2、b3;'を使って3つのボードを作成することができます。ボードの配列を作成することもできます: 'board ab [10];'。 –

答えて

15

これを試してみてください:

typedef char board[10][10]; 

その後、あなたはこのように、新しい配列を定義することができます。

board double_array = {"hello", "world"}; 

それは同じだと:

char double_array[10][10] = {"hello", "world"}; 
+0

2次元配列の新しい定義は何ですか? – user2216190

+1

@ user2216190: '' board'の有効な 'typedef'を与えられたことを意味しますか?そのタイプの変数をどのように作成しますか?そうであれば、答えは 'board b;'であり、 'board'の変数' b'を作成します。これは 'char b [10] [10];と完全に等価です(' typedef'はタイプ、新しいタイプではありません)。 –

+0

ボードで宣言された場合double_array = {"hello"、 "world"}; 配列要素にアクセスするにはどうすればよいですか? – Rahul

5

タイプ定義文

タイプ定義文は、ユーザが定義したデータタイプ を他のすでに利用可能なデータタイプを使用して定義できるようにするために使用されます。

基本フォーマット:だから

typedef existing_data_type new_user_defined_data_type; 

、あなたは次のようになりますゆうハオが言ったか、また、それを使用することができますようあなたがそれを使用することができます

typedef char board[10][10]; 

charポインタを使用して、次のような2D配列を定義します。

typedef char *board[10]; 

そして、あなたはYU Haoの説明に従います。 このようにして、文字列に使用する文字数をハードコードする必要はありません。

+2

'board'という名前では、ゲームボードを表現するために型が使用され、文字列自体を保持するためには使用されない可能性があります。しかし、それは少し細部です。また、厳密に 'typedef'は新しい型を作るのではなく、既存の型に名前(エイリアス)を与えます。それは微妙なディテールであり、あなたの答えを著しく損なうものではありません。 –

+0

@JonathanLefflerまあ、そうです!ポイントを取った、それはその感謝の可能性が高いようです! – 0decimal0