J'ai repris début le début en refaisant un nouveau programme simple pour comprendre, mais j'ai quelques erreur et le résultat final n'est... tout à fait cela !
Seule le 1er champ du tableau est correctement retrouvé dans main(); les autres affichent n'importe quoi... et je suppose qu'il doit falloir indiquer une taille quelque part, mais là, j'avoue que je pêche

et les erreurs du "return" de la fonction test(), je ne comprend pas pourquoi il y a des warnings ???
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include <stdio.h>
#include <stdlib.h>
int test(){
char *variable[4]; // Déclaration du pointeur "variable" avec 4 champs possible
variable[0] = "3"; // Définition des données "string" dans chaque ligne de la "variable"
variable[1] = "Bonjour";
variable[2] = "moi";
variable[3] = "toi";
return &variable; // Je renvoie l'adresse du pointeur mais GCC renvoie "warning: function returns address of local variable [enabled by default]" et "warning: return makes integer from pointer without a cast [enabled by default]"
}
int main(){
int *AdrTableau = test(); // on récpère l'adresse du pointeur renvoyé par la fonction test()
int i; // Init de la variable temporaire et locale
for(i=0; i<4; i++) { // Boucle pour lister tous les champs
// %d: affiche l'int "i"; %s: affiche le string char*
printf("%d : %s\n", i, AdrTableau[i] );
}
return 0;
} |
Le problème, c'est que je ne comprend pas pourquoi...
Tout me semble "logique"... Mais j'ai du louper quelque chose !
Avez vous une piste à me conseiller sur "chaque" problème ? Je pensais pourtant comprendre ces histoires de pointeur, mais visiblement...


Partager