main() appelle la fonction Call_By_Test() avec le paramètre argument First Node. J'ai libéré le premier nœud dans Call_By_Test() mais l'adresse du premier nœud n'est pas libérée dans main(), pourquoi?Question sur l'appel-par-référence?
typedef struct LinkList{
int data;
struct LinkList *next;
}mynode;
void Call_By_Test(mynode * first)
{
free(first->next);
first->next = (mynode *)NULL;
free(first);
first = (mynode *)NULL;
}
int main()
{
mynode *first;
first = (mynode *)malloc(sizeof(mynode));
first->data = 10;
first->next = (mynode *)NULL;
cout<<"\n first pointer value before free"<<first<<endl;
Call_By_Test(first);
// we freed first pointer in Call_By_Test(), it should be NULL
if(first != NULL)
cout<< " I have freed first NODE in Call-By-Test(), but why first node pointer has the value "<<first<<endl;
}
Sortie: première valeur de pointeur 0x804b008 j'ai libéré d'abord NODE Call-By-Test(), mais pourquoi premier pointeur de nœud a la valeur 0x804b008
@SIVA: Si vous êtes satisfait des réponses à certaines de vos 6 dernières questions, vous devez les accepter (en cliquant sur la coche creuse). – kennytm
Vous faites deux choses différentes dans 'Call_By_Test': vous appelez' free (ptr) 'et' ptr = NULL'. Lequel des deux attendez-vous d'affecter le 'first' dans main()? – MSalters
Je me demande toujours pourquoi la plupart des gens commencent à apprendre C++ à partir du sous-ensemble C ... –