עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

שפת C - מצביעים

Featured Replies

פורסם

ניסיתי להבין את מבנה הזיכרון, ההצבעות והפלט אך ללא הצלחה.

מישהו יוכל לעזור לי  להסביר מה הקשר בין התכנית לפלט שלה?

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
**********/

פלט מהתכנית הזאת?

 

פורסם

המערך הראשון k הוא מערך של מצביעים. האיבר הראשון במערך מצביע למחרוזת "HELLO", השני למחרוזת "FOR" וכן הלאה.

להזכירך, כל מערך הוא בעצם גם מצביע לאיבר הראשון במערך. ככה ש-k+x הוא בעצם מצביע לאיבר ה-x במערך, או פשוט אותו המערך החל ממקום x (לדוגמה אם [a=[1,2,3,4 אז [a+1=[2,3,4).

תחשוב מכאן מה זה בדיוק kk ולאן האיברים שלו מצביעים, ותמשיך משם.

 

פורסם
  • מחבר

אוקיי. הצלחתי להבין את 2 ההדפסות הראשונות, אך לא מצליח להבין את 2 האחרונות

אפשר המשך הסבר בבקשה?

נערך על-ידי Dolmiti

פורסם
  • מחבר

מקווה שהבנתי את ההדפסה השלישית

אבל הריביעית אין לי מושג. איך ייתכן p[-1][-1] במצביע?

פורסם

למרות שאני לא אוהב תרגילים כאלה, כי לפעמים הם נראים יותר כמו תרגילים בסדר עדיפות של אופרטורים ולא באמת תרגילים במבנה זכרון, יש פה הגיון שאחרי שאתה מבין אותו די קל להכליל אותו לתרגילים הבאים.

 

הנקודה שקל להתעלם ממנה פה היא שהפעולה kkk++ משנה את ערך המצביע kkk. לכן השורות אינן בלתי תלויות והסדר שלהן משנה. אם הן היו נתונות לך בסדר שונה, גם ההדפסות היו שונות והיית יכול גם לקבל התרסקות.

 

כך שלמעשה אחרי השורה הראשונה kkk הוא לא kk אלא kk+1. ואחרי השורה השנייה kkk זה kk+2. ולכן בשורה השלישית [2-]kkk הוא למעשה [0]kk ובשורה הרביעית [1-]kkk הוא [1]kk. משם מקווה שזה ברור.

פורסם
  • מחבר

אחלה עכשיו הבנתי תודה רבה

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.