J'essaie de comprendre comment allouer un bloc de mémoire dans une fonction et renvoyer un pointeur vers ce bloc via l'un des arguments. C'est un programme en C. Je semble avoir des problèmes. Voici le code:passer un bloc de mémoire à partir d'une fonction
void foo(char *ptr)
{
if (!(ptr = malloc(size)))
printf("error");
/* code here */
printf("buffer address: %i\n", (int)buffer);
}
int main()
{
char *ptr;
ptr = NULL;
foo(ptr);
printf("buffer address: %i\n", (int)buffer);
}
Et le résultat est:
buffer address: 142385160
buffer address: 0
mais je me attendais quelque chose comme:
buffer address: 142385160
buffer address: 142385160
Qu'est-ce que je fais mal?
Je ne crois pas que ce code donne la sortie que vous avez posté. Qu'est-ce que 'buffer' est déclaré être? Qu'est-ce qui change entre 'main' et' foo'? –
vous avez raison, c'est juste pseudo code ... Je pourrais éditer le poste pour vous donner plus d'informations –
Eh bien, soit le code réel, soit le vrai pseudo-code. Une maison à mi-chemin n'est pas très utile. Vous ne pouvez pas "renvoyer" une valeur en tant que paramètre, les paramètres sont transmis par la valeur en C. Quel est le problème avec le renvoi d'une valeur? (Oui, je sais, vous pouvez renvoyer des informations en les stockant à un endroit indiqué par un paramètre si ce paramètre est un pointeur.) Ce n'est pas la même chose que de transmettre des informations via un paramètre lui-même –