2010-07-28 7 views
3

lors de la définition de nouveaux types de données dans C, on peut faireComment "typedef" une matrice en C

typedef double BYTE; 

plus tard, il est possible de faire

BYTE length; 

etc

I voudrais faire quelque chose comme

typedef double[30][30][10] mymatrix; 

plus tard je le fais

mymatrix AA[10]; 

j'ai donc 10 matrices de type myMatrix, et je peux y accéder via AA [0], AA [1], etc

faire de toute façon cela avec le compilateur GNU C Je reçois des erreurs comme

Qu'est-ce que je fais mal ou comment pourrais-je atteindre mon objectif?
error: expected unqualified-id before '[' token 

Merci

+0

une dernière question. maintenant ça marche et je peux faire: mymatrix AA [10], comment accéder aux éléments de chaque matrice? J'ai essayé, par exemple, pour la première matrice, AA [0] [1] [2] [3], n'est-ce pas? – flow

Répondre

3

Suivez "declaration looks like use" C idée:

typedef double mymatrix[30][30][10]; 
+0

une dernière question. maintenant ça marche et je peux faire: mymatrix AA [10], comment accéder aux éléments de chaque matrice? J'ai essayé, par exemple, pour la première matrice, AA [0] [1] [2] [3], n'est-ce pas? – flow

+0

Vous n'avez que ** 3 dimensions ** ici, utilisez trois index: 'AA [i] [j] [k]'. –

+0

il déclare un tableau de 10 éléments de type 'mymatrix', qui est un tableau de 30x30x10 de' double'; Ainsi, il travaille finalement avec quatre dimensions. –

4

La réponse simple est de définir un objet nommé & déclaré que vous voulez, puis coller typedef devant:

double mymatrix[30][30][10] ; // defines a 3-d array. 


typdef double mymatrix[30][30][10] ; // defines a 3-d array type 

mymatrix matrix; 
+0

Je voudrais que l'on m'enseigne de cette façon à regarder les typedefs dans les cours de formation car cela aurait rendu la compréhension des typedefs et des pointeurs de fonction beaucoup plus facile. Il m'a fallu des années pour vraiment comprendre que les typedefs ne sont pas vraiment compliqués – Firedragon

1

Utilisez cette :

typedef double mymatrix[30][30][10]; 
+0

Oh, on dirait que Nikolai était un peu plus rapide à taper ;-) – abenthy