Dolmiti פורסם 2018 בפברואר 21 Share פורסם 2018 בפברואר 21 ניסיתי להבין את מבנה הזיכרון, ההצבעות והפלט אך ללא הצלחה. מישהו יוכל לעזור לי להסביר מה הקשר בין התכנית לפלט שלה? char *k[] = {"HOUSE", "FOR", "SHARE", "DEBUG"}; char **kk[] = {k+3, k+2, k+1, k}; char ***kkk=kk; int main() { printf("%s\n", **++kkk); printf("%s\n", *--*++kkk+3); printf("%s\n", *kkk[-2]+3); printf("%s\n", kkk[-1][-1]+1); return 0; } /*********** OUTPUT: SHARE SE UG OR **********/ פלט מהתכנית הזאת? קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2018 בפברואר 22 Share פורסם 2018 בפברואר 22 המערך הראשון k הוא מערך של מצביעים. האיבר הראשון במערך מצביע למחרוזת "HELLO", השני למחרוזת "FOR" וכן הלאה. להזכירך, כל מערך הוא בעצם גם מצביע לאיבר הראשון במערך. ככה ש-k+x הוא בעצם מצביע לאיבר ה-x במערך, או פשוט אותו המערך החל ממקום x (לדוגמה אם [a=[1,2,3,4 אז [a+1=[2,3,4). תחשוב מכאן מה זה בדיוק kk ולאן האיברים שלו מצביעים, ותמשיך משם. קישור לתוכן שתף באתרים אחרים More sharing options...
Dolmiti פורסם 2018 בפברואר 22 מחבר Share פורסם 2018 בפברואר 22 אוקיי. הצלחתי להבין את 2 ההדפסות הראשונות, אך לא מצליח להבין את 2 האחרונות אפשר המשך הסבר בבקשה? קישור לתוכן שתף באתרים אחרים More sharing options...
Dolmiti פורסם 2018 בפברואר 22 מחבר Share פורסם 2018 בפברואר 22 מקווה שהבנתי את ההדפסה השלישית אבל הריביעית אין לי מושג. איך ייתכן p[-1][-1] במצביע? קישור לתוכן שתף באתרים אחרים More sharing options...
QttP פורסם 2018 בפברואר 24 Share פורסם 2018 בפברואר 24 למרות שאני לא אוהב תרגילים כאלה, כי לפעמים הם נראים יותר כמו תרגילים בסדר עדיפות של אופרטורים ולא באמת תרגילים במבנה זכרון, יש פה הגיון שאחרי שאתה מבין אותו די קל להכליל אותו לתרגילים הבאים. הנקודה שקל להתעלם ממנה פה היא שהפעולה kkk++ משנה את ערך המצביע kkk. לכן השורות אינן בלתי תלויות והסדר שלהן משנה. אם הן היו נתונות לך בסדר שונה, גם ההדפסות היו שונות והיית יכול גם לקבל התרסקות. כך שלמעשה אחרי השורה הראשונה kkk הוא לא kk אלא kk+1. ואחרי השורה השנייה kkk זה kk+2. ולכן בשורה השלישית [2-]kkk הוא למעשה [0]kk ובשורה הרביעית [1-]kkk הוא [1]kk. משם מקווה שזה ברור. קישור לתוכן שתף באתרים אחרים More sharing options...
Dolmiti פורסם 2018 בפברואר 24 מחבר Share פורסם 2018 בפברואר 24 אחלה עכשיו הבנתי תודה רבה קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.