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

מקבל שגיאת ריצה בהדפסת איבר ברשימה מקושרת


bdoron

Recommended Posts

  • תגובות 43
  • נוצר
  • תגובה אחרונה

בהתחלה בלי שאני מוסיף תוכל הnext של הhead הוא null אבל אז הלולאה לא אמורה לרוץ כי שמתי תנאי, תרוצי כל עוד temp שונה מnull

זה אומר שהיא לא אמורה לרוץ... הלולאה אני מתכוון..

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

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

רגע רגע רגע , תעשו לי קצת סדר :) שאני יוצא אובייקט, אני עושה לו new הוא מקצה לאותו אובייקט בheap זה אני יודע , אבל אם לא עדכנתי לתוכו כלום אז הוא null

אין בו כלום..

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

זה לא נכון ?

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

בנאי ברירת המחדל קורא לבנאי ברירת המחדל של מחלקת האב, אם יש כזה, וכו'.

אם בכל השרשרת אין בנאים כלל, תקבל אתחול "ריק" - כלומר הזכרון של האובייקט יאותחל, אך השדות לא יאותחלו ויישארו עם ערכי ברירת המחדל שלהם: null עבור כל מה שהוא reference type וערך ברירת המחדל לvalue types (לטיפוסים הבסיסיים זה לרוב 0).

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

אז אם יצרתי אובייקט ובתוכו יש 2 פרמטרים מסוג string? זה אומר שהאובייקט מאותחל בדינאמי ו2 הפרמטרים הפנימיים מאותחלים באפס במקטע המחסנית?

ומה ההבדל בין ריק לnull

אף פעם לא הבנתי מה ההבדל...

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

אתה זורק פה כל מיני דברים לא קשורים לאוויר (מה קשורה המחסנית? מה זה "דינאמי"?) ומבלבל מונחים.

למחלקה אין פרמטרים. פרמטרים (או ארגומנטים) זה מה שאתה מעביר לפונקציה. למחלקה יש שדות. כל שדה שלא שמת לא ערך כלשהו מאותחל לערך ברירת מחדל, כמו ש-qttp אמר. אם לדוגמה יש לך מחלקה שיש לה שני שדות מטיפוס string ועוד שדה מטיפוס int, אז כשתיצור מופע של המחלקה, ערכי המחרוזות של המופע הזה יהיו null, והערך של ה-int יהיה 0 - אלא אם תשים להם ערך אחר בבנאי.

המחסנית בכלל לא קשורה כאן. המחסנית מחזיקה רק משתנים מקומיים. אם נגיד אתה עושה כזה דבר:

MyClass x = new MyClass()

אז המשתנה x מוגדר מקומית ונמצא על המחסנית, אבל הוא מצביע לאובייקט שנמצא ב-heap.

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

מקטע הזיכרון הדינאמי זה הheap, ומקטע המחסנית זה הlocal איפה שמאוכסנים המשתנים הפרמיטיבים

אני ממש לא מבלבל

http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx

- - - תגובה אוחדה: - - -

אני חשבתי שקוראים למשתנים שהם value types פרמטרים... ולפי מה שאני קראתי משתנים של מחלקה נקראים members או fields

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

value type זה משתנים פרימיטיביים (ו-struct, אבל לא ניכנס לזה). זה לא קשור לפרמטרים של פונקציות - פרמטרים יכולים להיות value type או reference type.

שדות של מחלקה אכן נקראים fields. המונח members כולל גם שדות וגם שיטות (methods) של המחלקה.

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

ארכיון

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


×
  • צור חדש...