2013-07-21 18 views
9

Czy istnieje sposób na wpisanie dwuwymiarowej tablicy w C? Coś jak:Typedef dla dwuwymiarowej tablicy w C

typedef char[10][10] board; 

Ten przykład nie jest kompilowany. Czy jest jakiś sposób to zrobić? Lub jakiekolwiek inne rozwiązanie?

+2

czy próbowałeś: typedef char board [] [10]; ? –

+1

Jak zdefiniowałbyś zmienną o nazwie 'board' jako tablicę 2D? Odpowiedź: 'char board [10] [10];'. Aby utworzyć "tablicę" zamiast zmiennej, użyj "klasy pamięci" 'typedef':' typedef char board [10] [10]; '. Następnie możesz utworzyć 3 plansze używając: 'board b1, b2, b3;'. Można również utworzyć tablicę tablic: 'board ab [10];'. –

Odpowiedz

15

Spróbuj tego:

typedef char board[10][10]; 

Następnie można zdefiniować nową tablicę jak to:

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

To samo z:

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

jaka będzie nowa definicja tablicy 2 wymiarów? – user2216190

+1

@ user2216190: czy masz na myśli "podany poprawny' typedef' z 'board', w jaki sposób utworzysz zmienne tego typu?" Jeśli tak, odpowiedzią jest 'board b;' tworzy zmienną 'b' typu' board', która jest w pełni równoważna 'char b [10] [10];' (ponieważ 'typedef' wprowadza alternatywną nazwę dla typ, a nie nowy typ). –

+0

Po zadeklarowaniu z tablicą double_array = {"hello", "world"}; Jak uzyskać dostęp do elementów tablicy? – Rahul

5

typów instrukcji definicji

Instrukcja definicji typu służy do umożliwienia zdefiniowania zdefiniowanych przez użytkownika typów danych przy użyciu innych już dostępnych typów danych.

podstawowy format:

typedef existing_data_type new_user_defined_data_type; 

Tak, należy do ciebie być:

typedef char board[10][10]; 

Można go używać jako Yu Hao powiedział, czy można z niego korzystać także ze znakami char definiuje taką tablicę 2D:

typedef char *board[10]; 

A następnie można zrobić, jak opisano w YU Hao. W ten sposób nie potrzebujesz sztywnego kodu liczby znaków, które chcesz użyć dla ciągów.

+2

Z nazwą 'board', jest prawdopodobne, że typ będzie używany do reprezentowania planszy i nie będzie używany do przechowywania ciągów jako takich. To jednak drobny szczegół. Ponadto, ściśle 'typedef' nadaje nazwę (alias) istniejącemu typowi, zamiast tworzyć nowy typ. To subtelny szczegół i nie wpływa w istotny sposób na twoją odpowiedź. –

+0

@ JonathanLeffler Cóż, tak! punkt wzięty proszę pana, to wydaje się bardziej prawdopodobne z tamtym dzięki !! – 0decimal0

Powiązane problemy