שאלה-העברת פרמטרים ב- cpp - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה-העברת פרמטרים ב- cpp


guy81

Recommended Posts

מה ההבדל בין העברת פרמטרים כזאת:

ב- main:



[size=78%]בפונקציה h:[/size]

[size=78%]void h(C *c )[/size]


[size=78%]לבין:[/size]
[size=78%]ב- main:[/size]

C c1(); h(&c)



[size=10px]בפונקציה h:[/size]

[size=10px]void h(C *c )[/size]

[size=1](מלבד העניין שהראשון הוקצה ב- heap והשני במחסנית, מה ההבדל מבחינת כל מיני פקודות והשמות שנעשה בפונקציה h על c המתקבל כפרמט)[/size]

C *c1= new C(); h©

קישור לתוכן
שתף באתרים אחרים

ערוך את ההודעה שוב.

אל תעתיק קוד ממקום למקום.

שים את הקוד בתוך טג קוד.

עדיף שתעבור ל"תצוגת קודים" (הכפתור השמאלי ביותר, זה שיש בו A אדומה).

ועשה "תצוגה מקדימה" לפני שאתה שולח את ההודעה.

קישור לתוכן
שתף באתרים אחרים

בסדר.

בשני "קטעי" הקוד הפונקציה h היא זהה, והיא תעשה אותו דבר. ההבדל ביניהם הוא איך ש-c1 נוצר, ואיפה הוא קיים.

במקרה הראשון, c1 נוצר על גבי ה-heap (שהוא הזכרון שיש לתכנית עבור דברים שהוקצו באופן דינמי) והמשתנה בעצם רק מחזיק מצביע אליו. המצביע הוא זה שמועבר ל-h. האובייקט לא יימחק באופן אוטומטי - בשביל לעשות זאת צריך לקרוא במפורש לאופרטור delete.

במקרה השני, c1 הוא אובייקט שנוצר על גבי המחסנית של הפונקציה main. כשפונקציית ה-main תסתיים, האובייקט יימחק באופן אוטומטי.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...