2013-07-21 17 views
9

C'è un modo per digitare un array bidimensionale in C? Qualcosa di simile:Typedef per array bidimensionale in C

typedef char[10][10] board; 

Questo esempio non viene compilato. C'è modo di farlo? O qualsiasi altra soluzione?

+2

hai provato: typedef char board [] [10]; ? –

+1

Come definiresti una variabile chiamata 'board' come array 2D? Risposta: 'char board [10] [10];'. Per creare una 'scheda' typedef invece di una variabile, usa la 'classe di memoria'' typedef': 'typedef char board [10] [10];'. È quindi possibile creare 3 schede usando: 'board b1, b2, b3;'. Potresti anche creare un array di schede: 'board ab [10];'. –

risposta

15

Prova questo:

typedef char board[10][10]; 

Quindi è possibile definire nuovi array come questo:

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

E 'lo stesso con:

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

quale sarà la nuova definizione per l'array 2 dimensioni? – user2216190

+1

@ user2216190: vuoi dire 'dato un 'typedef' di' board' valido, come creerai le variabili di quel tipo?' Se è così, la risposta è 'board b;' crea una variabile 'b' di tipo' board', che è completamente equivalente a 'char b [10] [10];' (perché un 'typedef' introduce un nome alternativo per un tipo, non un nuovo tipo). –

+0

Quando dichiarato con board double_array = {"ciao", "mondo"}; Come accedere agli elementi dell'array? – Rahul

5

Type Definition Dichiarazione

L'istruzione di definizione del tipo viene utilizzata per consentire la definizione dei tipi di dati definiti dall'utente utilizzando altri tipi di dati già disponibili.

formato di base:

typedef existing_data_type new_user_defined_data_type; 

Così, il vostro dovrebbe essere:

typedef char board[10][10]; 

è possibile utilizzarlo come ha detto Yu Hao o si può anche usarlo con i puntatori char per definire un array 2D come questo:

typedef char *board[10]; 

E quindi si può fare come descritto da YU Hao. In questo modo non è necessario il codice hard il numero di caratteri che si desidera utilizzare per le stringhe.

+2

Con il nome 'board', è probabile che il tipo verrà utilizzato per rappresentare un tabellone di gioco, e non sarà usato per contenere stringhe di per sé. Questo è un dettaglio minore però. Inoltre, rigorosamente 'typedef' dà un nome (alias) a un tipo esistente, piuttosto che creare un nuovo tipo. Questo è un dettaglio sottile e non toglie materialmente la tua risposta. –

+0

@ JonathanLeffler Beh, sì !! punto preso signore, quello sembra più probabile con quello grazie !! – 0decimal0