I think this is what you want: - Note your code generates a memory leak on line 43...
# include <stdio.h>
# include <stdlib.h>
struct test
{
int data;
struct test *link;
};
void change(struct test **ptr);
int main()
{
struct test *fresh = (struct test *)malloc(sizeof(struct test));
int some_data = 10;
fresh -> data = some_data;
fresh -> link = NULL;
printf("\n\n\tBefore Going Into Function");
printf("\n\n\tData = %d\t\tAddress %p", fresh -> data, (void*)fresh);
printf("\n\n\t____________________________________________________________");
change(&fresh);
printf("\n\n\tAfter Getting Out Of Function");
printf("\n\n\tData = %d\t\tAddress %p", fresh -> data, (void*)fresh);
printf("\n\n\t____________________________________________________________");
return 0;
}
void change(struct test **some_ptr)
{
int some_new_data = 20;
struct test *new_fresh = (struct test *)malloc(sizeof(struct test));
*some_ptr = new_fresh;
/*(*some_ptr) -> data = some_new_data;
(*some_ptr) -> link = NULL;*/
new_fresh->data = some_new_data;
new_fresh->link = NULL;
printf("\n\n\tInside Function");
printf("\n\n\tData = %d\t\tAddress %p", new_fresh -> data, (void*)new_fresh);
printf("\n\n\t____________________________________________________________");
}