05-11-2007, 22:13
|
|
|
|
חבר מתאריך: 09.04.02
הודעות: 8,000
|
|
ציטוט:
במקור נכתב על ידי DCD
הקוד הבא אומר שהמשתנה(? או שצריך לקרוא לו מצביע?) p הוא מצביע ל-char:
קוד:
char *p = "Hello World!";
|
אמת ויציב. שים לב ש-p לא מצביע אל סדרה של כתובות, אלא אל כתובת אחת בלבד, שבה שמור התו הראשון במחרוזת.
ציטוט:
במקור נכתב על ידי DCD
בקוד למעלה, ערכו של p הוא 13, כלומר שהוא מצביע על תא מסוים בזיכרון, שכתובתו היא 13.
|
נכון, אבל אתה לא תוכל לבצע הצבה כזאת במציאות, מכיוון שטווח הזיכרון שמוקצה לתוכנה משתנה מהרצה להרצה. אין לך שום דרך לדעת מה הטווח שהוקצה - הכל מנוהל על ידי מערכת ההפעלה.
ציטוט:
במקור נכתב על ידי DCD
קוד:
char *p;
char n = "a";
p = &n;
בקוד למעלה, בשורה האחרונה, p מצביע על התוים שהמשתנה n שווה אליהם.
|
הקוד הזה לא חוקי ב-C. כשאתה משתמש במרכאות כפולות, אתה מציין מחרוזת - מערך של תוים שמסתיים בתו 0\. אסור לך להציב מחרוזת במשתנה מטיפוס char, משום ש-char הוא בסך הכל מספר בגודל בית אחד. אם היית כותב char * n או []char n, אז היית יכול להציב את המחרוזת בלי בעיות.
ציטוט:
במקור נכתב על ידי DCD
הקוד הבא אומר שהמשתנה p מצביע ל-int:
כלומר ש-57 זה הכתובת בזיכרון ש-p מאחסן בו (זהו ערכו של p), ויכול להיות שבכתובת זו יש ערך (ואולי גם אין ערך). לא בהכרח יש ערך בכתובת זו.
|
נכון, אבל שים לב להערה למעלה.
מקווה שהבנת...
|