main() вызывает функцию Call_By_Test() с параметром параметра First Node. Я освободил первый узел в Call_By_Test(), но адрес первого узла не освобожден в main(), почему?.Вопрос по вызову по ссылке?
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;
}
Выход: первое значение указателя 0x804b008 Я освободил первый УЗЕЛ в Call-By-Test(), но почему первый указатель узла имеет значение 0x804b008
@SIVA: Если вас устраивают ответы на некоторые из ваших последних 6 вопросов, вы должны их принять (нажав на полую галочку). – kennytm
Вы делаете две разные вещи в 'Call_By_Test': вы называете' free (ptr) 'и' ptr = NULL'. Какой из двух вы ожидаете повлиять на «first» в main()? – MSalters
Я все еще удивляюсь, почему большинство людей начинают изучать C++ из подмножества C ... –