נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: משהו קטנטן בסי ++

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
זיו
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 08 March 2008 בשעה 19:03 | IP רשוּם
ציטוט זיו

למה השורה השנייה לא עובדת וזורקת אקספשן

char* s="hello world";

s[0]='l';

הגדרת מחרוזת ושינוי התו הראשון

 

תודה

חזרה לתחילת העמוד הצג את כרטיס החבר של זיו חפש הודעות אחרות של זיו בקר בדף הבית של זיו
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 08 March 2008 בשעה 19:26 | IP רשוּם
ציטוט shoshan

אתה הרי שומר פוינטר לזכרון ב-s.

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

בגלל שזה קבוע של הקוד זה כנראה נשמר בזכרון readonly.

אבל אתה מוזמן לפרט exception


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 08 March 2008 בשעה 19:43 | IP רשוּם
ציטוט אלצ'קו

מוסבר בסוף ההודעה הזו שלי:
אלצ'קו כתב:
לעומת זאת, אם הפונקציה הייתה משנה את המקום אליו מצביע המצביע, זה היה נראה מחוץ לפונקציה. לדוגמה:
קוד:
void f(char arr[]) {   
    *arr='f';
}

הקוד הזה עשוי לשנות את 'a' מתחילת המחרוזת ל-'f', כך שכעת המחרוזת תהיה "fbcde", או:
קוד:
void f(char arr[]) {   
    strcpy(arr, "fghij");
}

שיעתיק את המחרוזת "fghij" למקום שאליו מצביע arr (המערך המקורי שלנו).
שים לב ששני הדברים הללו עשויים לא לעבוד במקרה של הקוד שלנו, והתוכנית תקרוס בזמן ריצה. מיד ההסברים.

עכשיו לגבי סוגי זיכרון, ובפרט, המחסנית והערימה. הזיכרון מחולק לכל מיני אזורים, ברמת המעבד וברמת מערכת ההפעלה. שני מיקומי זיכרון שמקובל לדבר עליהם הם המחסנית והערימה.
  • המחסנית...
  • הערימה...
ישנם עוד מספרי אזורי זיכרון מקובלים. לדוגמה:
  • בלוק ה-CODE, לתוכו נטען הקוד של התוכנית שלך.
  • בלוק ה-DATA שמכיל קבועים.
שני הבלוקים הספציפיים הללו עשויים להיות מוגנים בפני כתיבה, לשם הגנה. זה מחזיר אותנו למה שהזכרתי למעלה. אם הפונקציה f תשנה לשנות את המידע אליו מצביע הפרמטר שהיא קיבלה, התוכנה עלולה לקרוס. המערך array עשוי להיות מוקצה באזור ה-DATA, או באזור אחר שניתן רק לקרוא ממנו (זה נכון לגבי כל הקבועים בתוכנה שלך, בין אם מספריים, ובין אם מחרוזות, כמו "abcde" ו-"fghij" מהקוד למעלה). ברגע שתנסה לכתוב לאזור הזה, מערכת ההפעלה תגיד לתוכנה שלך שלום, ותסגור אותה.

חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 

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

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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