הפונקציה realloc בC - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

הפונקציה realloc בC


BedB0y

Recommended Posts

נסיתי, עכשיו התבלבלתי עוד יותר.

מבחינה תחבירית זה נראה לי הכי נכון שאפשר, אולי בגלל זה אני לא מצליח להבין..

אולי תגלה לי את הפיתרון? מה לא היה נכון שם? ::)

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

אתה מנסה לעשות משהו כזה (זה די דומה לקוד שלך, פישטתי אותו והורדתי את הקטע של הפונקציות):

Monom *a = (Monom*)malloc(sizeof(Monom)*10);
Monom **b = &a;

שים לב שהטיפוס של a הוא מצביע ל-Monom, והטיפוס של b הוא מצביע למצביע (ל-Monom). להזכירך, מצביע == מערך, כלומר אם a הוא מצביע ל-Monom אז הוא גם משמש כמערך של Monom, ו-b, שהוא מצביע למצביע, משמש כמערך של מצביעים.

כשאתה מנסה לעשות [b[j אז זה בעצם שקול ל-(b+j)*, כלומר "גש למקום ה-j במערך b". אבל b הוא לא באמת מערך! הוא סתם מצביע למקום כלשהו בזכרון (ליתר דיוק, המקום בו יושב המשתנה a). תאר לך לדוגמה שהמערך שנוצר באמצעות ה-malloc יושב במקום 1000. כלומר, a מכיל את הערך 1000, וכשאתה עושה [a[j אז אתה בעצם ניגש למקום 1000+(j*sizeof(Monom בזכרון. נניח כעת שהמשתנה a יושב במקום 20000 בזכרון. אז b מכיל את הערך 20000, וכשאתה עושה [b[j אז אתה מנסה לגשת למקום 20000+(*j*sizeof(int, שהוא חסר משמעות.

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

ארכיון

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

×
  • צור חדש...