En passant le pointeur de l'argument par référence en C?

#include <stdio.h>
#include <stdlib.h>

void
getstr(char *&retstr)
{
 char *tmp = (char *)malloc(25);
 strcpy(tmp, "hello,world");
 retstr = tmp;
}

int
main(void)
{
 char *retstr;

 getstr(retstr);
 printf("%s\n", retstr);

 return 0;
}

gcc ne serait pas compiler ce fichier, mais après l'ajout #include <cstring> je pourrais utiliser g++ pour compiler ce fichier source.

Le problème est: est-ce le langage de programmation C en charge la transmission de pointeur en argument par référence? Si non, pourquoi?

Grâce.

Pas liés à votre question, mais pour la curiosité, ce qui est le cas pour le passage d'un pointeur comme une référence?
si vous souhaitez que la fonction pour être en mesure de modifier le pointeur, et avoir la modification se propager au-delà de la portée de la fonction.
Si vous souhaitez effectuer malloc de chaînes dans une fonction qui n'a pas d'espace libre de la mémoire alors vous pourriez envisager d'utiliser valgrind ou l'équivalent de l'outil de test de fuites de mémoire.
Une référence est une façon de confondre les programmeurs de ce qui se passe vraiment. Si vous la discipline de votre approche de pointeurs, vous trouverez que les références ne sont pas nécessaires. Lorsque vous traitez avec une référence à un compilateur est de prendre des mesures sur un objet et de la gestion de l'indirection pour vous.
PP: simplification grossière de références; toute fonction peut être utilisée abusivement.

OriginalL'auteur Jichao | 2009-12-01