עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

הפונקציה realloc בC

Featured Replies

פורסם

מסיבות לא מובנות כשאני משתמש בה, התוכנית קורסת בזמן ריצה (או שאני מקבל שגיאה מוזרה מהvisual studio)

אם אני לא מוסיף 1 לגודל המערך החדש.

נגיד רציתי לעשות realloc למערך שהגודל החדש שלו יהיה 4, אם אני לא אתן לו 5 אני אקבל (ברוב המקרים, זה אפילו לא חד משמעי) איזה שגיאה מוזרה או קריסה.

לאו דווקא מחרוזות, אפילו struct חדש שאני יוצר.

לא שמתי לב בפעמים הקודמות, אבל עכשיו זה קרס כשנסיתי להקטין את המערך (להעיף את התאים הריקים)

זה אמור לעבוד ככה? יש חלופה לפונקציה הזאת?

עריכה : הוספתי תמונה של השגיאה הנוכחית. היא קופצת רק אם אני לא רושם בrealloc גודל שלפחות גדול ב1 מהמערך החדש. נסיתי לעשות project חדש אבל זה לא עזר

[attachment deleted by admin]

פורסם
  • מחבר

http://dl.dropbox.com/u/24303191/func2.txt

קורס בפונקציה האחרונה בסוף בשורה של count+=1

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

אם אני עושה sizeof לכתובת ההתחלה של המערך אני מקבל את גודל הכתובת (4) ולא את גודל המערך, במה טעיתי?

תודה

פורסם

לא ברור לי למה אתה עושה realloc בכל איטרציה של הלולאה ב-StrtoMonom.

לשאלתך:

אי אפשר להחזיר מערך מפונקציה. מה שחוזר למעשה הוא מצביע, וגודלו הוא אכן 4. אם מי שקרא לפונקציה צריך לדעת את הגודל של המערך, הוא חייב לקבל אותו בנפרד מהמערך.

חוץ מזה, sizeof היא פעולה שמחושבת בזמן הקומפילציה, לא בזמן ריצה (כלומר, sizeof של מערך יתן לך את גודל המערך רק אם הגודל שלו סטטי).

עוד כמה הערות כלליות:

הפונקציה CharToInt מיותרת כשקיימת הפונקציה הסטנדרטית atoi.

הפונקציה isOnlySpaces עושה עבודה מיותרת. במקום לספור כמה רווחים יש, אתה יכול פשוט לעצור ברגע שאתה נתקל בתו שאינו רווח.

תשתמש ב-int main במקום void main, ודאג להחזיר 0 בסופה.

I've said it before and i'll say it again - אחרי if/for/while תמיד תמיד תמיד לפתוח סוגריים מסולסלים, גם אם זו רק שורה אחת.

דאג לשחרר את כל הזכרון שאתה מקצה כאשר אתה כבר לא צריך אותו יותר.

פורסם
  • מחבר

לא בכל אינטרציה, רק אם

i==PhysSize

תודה על ההערות

פורסם
  • מחבר

כדי להפוך את הגודל הלוגי לפיזי, להפטר מהתאים שלא הוכנס בהם כלום.

פורסם
  • מחבר

אופס, לא שמתי את זה בסוגריים הנכונים :bash:

זה היה צריך להיות לפני ה-return

פורסם
  • מחבר

http://dl.dropbox.com/u/24303191/func3.txt

הוספתי פונקצית מיון בועות שממיינת את המבנים לפי אחד השדות (power)

בתוך הפוקציה הזאת יש פונקציית swap. כשאני עוקב בדיבאגר אחרי ה-swap שורה שורה, אני לא רואה את ההחלפה מתבצעת בזמן אמת, אלא רק אחרי שאני יוצא מהפונקציה ערכי המשתנים מתחלפים, כתבתי משהו לא נכון?

אחרי זה יש פונקציה שאמורה לאחד את כל המבנים לפי שדה הpower, היא קורסת לי בשורה של

while(arr->power==arr[i+j]->power)

עשיתי בדיקה על שתי משתנים, מסתבר שזה בגלל שרק ב arr[0] היה ערך, בarr[1] הופיעו לי פתאום סימני שאלה, לא ברור לי לאן נעלמו הערכים

זה קשור אולי ל-swap? או שלא העברת את המערך כמו שצריך בפונקציה האחרונה?

תודה

עריכה : בדקתי והערכים של המערך כולם הולכים לאיבוד חוץ מהתא הראשון arr[0] בדיוק בכניסה לפונקציה האחרונה.

לי נראה שהעברתי את המערך כמו שצריך, מישהו יכול לעלות על הטעות?

פורסם

א. ערוך את ההודעה שלך ושים את הקוד בתוך טג קוד, כי עכשיו הקוד דופק את ההודעה.

ב. האופרטור <- שקול להפעלת * ואז .

כלומר:

a->x

זה כמו

(*a).x

ועכשיו תחשוב מה הבעיה עם השורה שעושה לך בעיות.

פורסם
  • מחבר

סוגריים?

האמת שעוד אתמול עברתי לצורה של

(*a).x

כי לא רציתי להתעסק עם זה ::)

הבעיה הייתה שהייתי צריך לשים איפשהו סוגריים?

פורסם

לא, לא סוגריים.

הבעיה היא שאתה מקבל מצביע למערך ואתה מתייחס אליו כמו מערך של מצביעים.

פורסם
  • מחבר

אז איך זה אמור להיות?

הכנסתי את arr שהוא משתנה מטיפוס

Monom**

כלומר

arr[i]

הוא משתנה מטיפוס

Monom*

בגלל שהוא מצביע בשביל לגשת לשדות שלו אני צריך להפעיל את החץ במקום הנקודה,לא? ???

פורסם

לביטוי [arr[j יש משמעות רק אם arr הוא מערך. אבל הוא לא מערך - הוא מצביע למערך.

תנסה לצייר תרשים של מבנה הזכרון כשאתה קורא לפונקציה, ותבין מה הבעיה.

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.