לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 20-01-2007, 08:00
  משתמש זכר LinkBomber LinkBomber אינו מחובר  
 
חבר מתאריך: 31.03.02
הודעות: 400
אפשרי בהחלט
בתגובה להודעה מספר 1 שנכתבה על ידי shlomyss שמתחילה ב "שאלה פשוטה אך חשובה במצביעים בC"

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

ניתן בהחלט לעשות משהו כמו:
קוד:
int* p; p = 0xFFFFFFFF;

אם, לעומת זאת, ברצונך לגשת לערך שעליו מצביע p, או במילים אחרות להגיע לתוכן הזיכרון אשר
נמצא בכתובת FFFFFFFF, אתה שם כוכבית בהתחלה:
קוד:
*p=10

חשוב אבל גם להוסיף ולהגיד שבדוגמא שלי הכרזתי על p כמצביע לסוג int, ז"א שהמהדר מניח שאתה
עובד עם מספרים שלימים שבד"כ מורכבים מ4 ביתים. לכן אם תעשה משהו כמו p++, הכתובת של
המצביע אוטומטית תגדל ב4 ולא ב1, כיוון שהמהדר בעצם משנה את p כדי להצביע לשלם הבא בזיכרון.

יש עוד דבר אחד שלגביו אני לא בטוח כי אף פעם לא ניסיתי אותו. בהרבה מערכות מחשבים
הזיכרון "מיושר", ז"א שכאשר אתה ניגש לנתון שהוא יותר גדול מבית אחד (כגון מספר שלם),
כתובת הזיכרון חייבת להתחלק במספר כלשהו. אם הזיכרון מיושר באופן מלא אז הכתובת חייבת
להתחלק בגודל של הנתון (4 למספרים שלימים). אם הוא מיושר חלקית, אז יכול להיות שניתן
לגשת לזיכרון שמתחלק ב2 אפילו אם הנתון בן 4 ביתים. לכן, יכול להיות שמצביע למספר שלם
לא יוכל לקבל כל כתובת. אבל בעיקר אני יודע את זה מתיכנות בשפת מכונה, אני לא בטוח איך
המהדר של C מטפל בדברים כאלה.

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

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.fresh.co.il/scripts/birthday.php?date=29/04/1987]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 02:28

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר