עבור לתוכן

Pointers לוקליות וגלובליות

Featured Replies

פורסם

struct Node
{
int data;
Node *next;
};


void func(Node *head)
{
head=new Node();
head->data=10;
head->next=NULL;
}

int main()
{
Node *head;

head=new Node();
head->data=0;
head->next=NULL;

func(head);

cout << head->data;


return 0;
}

ברגע יציה מהפונ' הפוינטר חוזר להיות עם תוכן שהיה לפני קריאה לפונ'

זאת אומרת זהו פוינטר לוקלי? זה כמו עם משתנים לוקליים שהם קיימים רק עבור הפונ' שנוצרו בה (ועבור הפונ' שבתוך)?

מה יכול להיות הפתרון לבעיה (כמו עם משתנים, שאנו יכולים להעביר לפונ' את המשתנה עם סימן "&" וכך נוכל לשנות אותו)

בקיצור, איך אוכל לשנות את המידע שפוינטר מצביעה עליו (ב-HEAP) מתוך פונ', כך שהשינויים שבוצעו ישארו גם כשנצאה מהפונ'?

תודה

פורסם

פוינטר לפוינטר:

void func(Node **head)
{
(*head)=new Node();
(*head)->data=10;
(*head)->next=NULL;
}

ד.א. אל תשכח לעשות DELETE לפני הFUNC, בקריאה:

func(&head);

פורסם
  • מחבר

תוכל לפרט טיפה למה DELETE לפני FUNC?

פורסם

או בתוך הFUNC.

אתה חייב לנקות את האיברים שאתה מקצה.

delete [] (*node);

(*head)=new Node();

(*head)->data=10;

(*head)->next=NULL;

ובסוף הMAIN גם delete:

delete [] head;

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים