ככל הנראה הנושא עדיין לא יושב לי טוב ואני רוצה חידוד
להן יש לי את הקטע קוד הבא
typedef struct node{ int val struct node *next; }node;void add(node *list,int val) { node * temp=(node *)malloc(sizeof(node)); temp->val=val; temp->next=list; list=temp; } void main() { node *list=NULL; add(list,1); add(list,2); } השאלה פה מה יהיה list אחרי פעמים הפעלת הפונקציה אז מסתבר שהוא יהיה NULL
|
השינוי שצריך לעשות בפונקציה כדי שבאמת יוכנס לו ערכים
void add(node **list,int val) { node *temp=(node *)malloc(sizeof(node)); temp->val=val; temp->next=*list; *list=temp; }void main() { node *list=NULL; add(&list,1); add(&list,2); }
|
השאלה שלי היא כזאת
במצב הראשון מה בעצם הפונקציה add מקבלת? היא יוצאת משתנה חדש מקומי list
במקום חדש בזכרון ומקצה לו NULL ובמצב השני הוא מקבל ממש את הכתובת של הרשימה? וכמו כן בשורה temp->next=list; הנקסט של טצפ בעצם מקבל NULL ולא את הכתובת של list במצב הראשון בשני ממש מקבל את הכתובת של LIST?
כלומר אם אני ארצה ממש לעשות שינויים ברשימה המקורית ולא ברמה המקומית צריך לשלוח את זה כמו במצב 2?