פורסם 2004 בפברואר 721 שנים יש לי כמה שאלות קטנות אבל מציקות שאני לא מוצא להן תשובה בשום ספר, מודה מראש על העזרה.א. אם נגיד רשום ליint x=2, *p;x=sizeof(x);x=sizeof(p);כמה יהיה שווה בשני המקרים X?ב. האם שתי דרכי הכתיבה נכונות:void main()}char *s="bla";והשנייהchar *s;s="bla";ג. מה עושות שתי הפקודות:int x=5, *p;x=(int)p;p=(int*)x;נגיד ש- x=5 והכתובת של x היא fff8 מה יהיה הערך של p לאחר הצבה זו?ד. פויינטר לפויינטר:int *ptr;int **ptr2;*ptr2=ptrהאם זה בעצם אומר שהמצביע השני מקבל את הכתובת של הראשון??
פורסם 2004 בפברואר 721 שנים א.sizeof(int) = 16bit = 2bytes (max unsigned int = 65535)לכולנו יש מעבד של 32 ביט לכן כתובת היא 32 ביטsizeof(int*) = sizeof(pointer) = 32bit = 4byte ב. אין הבדל.ג. הפקודה הראשונה גורמת לכך ש-x יהיה שווה לכתובת של משהו בזיכרון (לא הגדרתלמה p מצביע ככה שהוא בעצם יהיה זבל)אם היית עושה p=&x לפני הפקודה הראשון אז x=(int)p היה בעצם משנה את x לכתובת של עצמו בזיכרון (וכמובן שיש פה בעיה של המרה מ-32 ביט ל-16 ביט)הפקודה גורמת לכך ש-p יצביע לכתובת שערכה x. אם היית עושה לפני x=100 אז p היה מצביע לכתובת 100.ד. ptr2=&ptr אומר שהשני יקבל את הכתובת של הראשוןתתיחס ל-int* בתור טיפוס מסוג blaאז יש לך בעצםbla ptrbla *ptr2ואז ברור שאתה צריך לעשות ptr2=&ptrלהבא רכז שאלות בתראד אחד ואל תפתח כמה
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.