שפת C גלישה ממערך - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שפת C גלישה ממערך


Dolmiti

Recommended Posts

מבחינת C הכל פשוט ומוגדר היטב. מצביע הוא סה"כ מספר שהערך שלו מפורש כמו כתובת בזכרון. אפשר לבצע עליו אריתמטיקת מצביעים. אם אתה מנסה לגשת לכתובת P+X או P-X (כאשר P מצביע וX מספר), התוכנה פשוט תנסה לגשת לשם. אם יש הגנות (נגיד מנהל של המערכת) הוא יכול לזהות שאתה מנסה לגשת לכתובת שהיא לא שלך, ולזרוק אותך (segmentation fault). אם לא, אז אתה יכול פשוט לדרוס של מישהו אחר, והתוצאות תהיינה בלתי צפויות.

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

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

ככה או ככה הייתי מאוד ממליץ שתלמד לעומק את נושא המצביעים (וניהול זיכרון).

 

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

דווקא בגלל זה אתה צריך להבין מה אתה עושה עם מצביעים, כי כמו שזה כלי טוב - זה גם דבר מסוכן.

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

לומד עצמאי
מנסה להבין את סוג השגיאה של פניה לכתובת שאולי קיימת, האם זה כמו שגיאה של 1+1=3 שזה חוקי לחלוטין מבחינת שפת סי, או שלמעשה באופן רשמי זה לא מוגדר לפנות לכתובת מחוץ לגבול המערך

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

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

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

ארכיון

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

×
  • צור חדש...