
18-06-2008, 19:20
|
|
|
|
חבר מתאריך: 26.05.08
הודעות: 120
|
|
|
יש דרך, אבל לא מה שעשית.
אתה הגדרת 3 int-ים ומצביע ל-int. כדי ליצור 4 מצביעים ל-int עליך לכתוב:
int *i, *j, *k, *l;
קצת זוועתי. בגלל דברים כאלה הקונבנציה אצלנו היא שבכל שורה מגדירים או מצהירים על משתנה אחד בלבד. למרות זאת, אפשר להגדיר מספר מצביעים בשורה אחת בלי להשתמש בהמון כוכביות, באמצעות typedef, כך:
typedef int *intptr;
intptr a,b,c,d;
כאן, ארבעת המשתנים a,b,c,d יהיו מצביעים ל-int?
בנושא שונה. כאשר מצביע ל-int מצביע למשתנה מטיפוס char, קורה בדיוק מה שהקוד אומר שקורה:
char c;
int *pI = reinterpret_cast<int*>(&c);
שזה, משהו לא מוגדר. ליתר דיוק, pI יקבל את הכתובת של c, וזה מוגדר בהחלט. העניין הוא שיכול בהחלט להיות ש-int גדול מ-char (לדוגמה, char הוא בייט אחד ו-int הוא שניים או ארבעה בתים - נפוץ במחוזותינו), ולכן כשתעשה dereference ל-pI התוצאות לא יהיו מוגדרות.
את שני המשפטים האחרונים שלך בכלל לא הבנתי.
|