Bonjour,
J'ai une question tres bete, mais j'ai un trou :
comment faire un tableau à 2 dimensions avec dans la 1er colonne des char et dans la deuxieme des int?
comment le declarer??
Merci.
Version imprimable
Bonjour,
J'ai une question tres bete, mais j'ai un trou :
comment faire un tableau à 2 dimensions avec dans la 1er colonne des char et dans la deuxieme des int?
comment le declarer??
Merci.
Impossible. Un tableau est composé de variables de même type.
Si tu veux utiliser des types différents, utilises une structure plutôt.
A noter que dans ton cas, tu peux t'en sortir avec un tableau de int. Un char "rentre" dans un int.
Nas'
tu peux pas.
dans ton cas je te propose de creer un struct qui contient un entier et un carctère, et de crée un tableau a 1 dimension qui contient tes structs.
par exemple:
Code:
1
2
3
4
5
6
7
8
9
10
11 struct mesElements { int i; char c; }; void main() { struct mesElements monTableau[10]; }
ok, merci pour ces infos, je penses que je vais en effet opter pour la structure.
Si c'est possible :Citation:
Envoyé par Nasky
tab[0] -> tableau d'entierCode:
1
2
3 int tab_int[100]; char tab_char[100]; char tab[2] = { tab_int, tab_char };
tab[1] -> tableau de caractère.
Voilà ;)
[edit] :koi: j'ai comme un doute, je regarderai lorsque j'aurai un compilateur C sous la main[/edit]
moi aussi j'ai douté. et comme j'ai un compilateur sous la main j'ai testé:Citation:
Envoyé par gege2061
ça marche, mais avec un warning à la compilation:
Citation:
E:\TESTS\tests.c(15) : warning C4047: 'initializing' : 'char ' differs in levels of indirection from 'int *'
E:\TESTS\tests.c(15) : warning C4047: 'initializing' : 'char ' differs in levels of indirection from 'char *'
Non c'est pas bon du tout, déjà avec :Citation:
Envoyé par Biosox
ça sera un peu mieux mais toujours pas top, je vai y réflechir au calme un peu plus tard ;)Code:char *tab[2]
Je pense que le mieux et le plus propre est d'utiliser un tableau de structure, et puis ca reste une solution très flexible :!:
Biosox :Ce qui est effectivement la solution logique.Mais pour en revenir à la discussion (un peu académique ici certes) initiée par gege2061Citation:
je te propose de creer un struct qui contient un entier et un carctère, et de crée un tableau a 1 dimension
Impossible. tab_int est du type int * et tab_char du type char*. Les deux sont de types differents et ne peuvent être mis dans un même tableau.Code:
1
2
3
4 Code: int tab_int[100]; char tab_char[100]; char tab[2] = { tab_int, tab_char };
Mais en continuant dans la même idée , on peut avoir
. De toute façon, pour l'utiliser , c'est coton de transtyper à chaque fois :cry: .Code:void* tab[2] = { tab_int, tab_char };
Tout ceci ne répond pas évidemment pas à la question initiale posée d'UN tableau, puisque maintenant on en a trois. 8O
Pour Gege, il serait plus exact d'écrire:
Code:
1
2
3
4
5
6
7
8
9
10 int aiTab[NB_INT]; char acTab[NB_CHAR]; void* apvTab[2] = {aiTab,acTab}; //mais apres à utiliser c'est pourri ((int*)apvTab[0])[0] = (int) 1; ((char*)apvTab[1])[0] = (char) 1;
Pas possible. Un tableau est, par définition, une séquence d'objets identiques. Ce que tu veux faire, c'est soit un tableau d'int à 2 dimensions (le type 'char' est rarement utile, sauf pour les chaines),Citation:
Envoyé par barucca
soit un tableau de structure,Code:
1
2 int tab[N][2];
Comme il risque d'y avoir un trou entre a et b, pas sûr qu'on gagne de la place...Code:
1
2
3
4
5
6
7
8 struct elem { char a; int b; }; struct elem tab[N];
Personellement, si la place est en jeu, je préfère optimiser mes structures en utilisant des champs de bits, par exemple :
Code:
1
2
3
4
5
6 struct elem { unsigned a:8; unsigned b:16; /* selon les besoins... */ };
Code incorrect.Citation:
Envoyé par gege2061
la structure ca marche impec!!! merci a tous! :)