J'ai un tableau de valeurs arbitraires, donc je l'ai défini comme un tableau de pointeurs void, donc je peux pointer vers n'importe quel type d'information (comme int
, tableaux de caractères, etc). Cependant, comment est-ce que je lui assigne un int
?Si j'ai un pointeur vide, comment y mettre un int?
Prenez par exemple ces initialisations:
void* data[10];
int x = 100;
Mon intuition pourrait penser, mais cela donne une erreur de compilation:
data[0] = malloc(sizeof(int));
*(data[0]) = x;
Aussi je pensé à utiliser &x
, mais je prendrais l'adresse d'une variable locale, qui (à ma compréhension) serait effacée après la sortie de la procédure. Donc, si j'ai une variable locale x
, comment l'obtenir dans une variable de type pointeur de variable correctement?
Ou simplement utiliser un tableau de syndicats, et oublier le malloc –
En effet, bon point. J'allais avec le plus proche de l'original. –
Merci, mais cela fonctionnerait avec des pointeurs de tableau de caractères (char *).Et cela ne causerait-il pas de problèmes d'alignement sur certaines plateformes? Et enfin, si j'ai un caractère [40], il me semble que c'est un gaspillage de mémoire de réserver 40 octets si je n'utilise que 4. :-) – pbean