פורסם 2011 בספטמבר 614 שנים הייכאשר אני רואה את ההודאה *char בקוד , מה זה עושה בקוד?דוגמא:char* Go = "B";ואיזה סוג מצביע זה ? האם לפני השימוש אני צריך להכריז עליו על ידי Type def?
פורסם 2011 בספטמבר 614 שנים מה זאת אומרת "איזה סוג מצביע זה"? זה מצביע ל-char.מחרוזות ב-C הן פשוט מערכים של char (כלומר, רצף של char בזכרון). מערך ב-C הוא בעצם מצביע לתחילת המערך (כלומר, הטיפוסים []char ו-*char הם למעשה שקולים). כשאתה עושה:char* go = "B";הקומפיילר יוצר בזכרון מערך שמכיל את המחרוזת "B" (זה בעצם מערך בגודל 2 - תו ראשון הוא 'B' ותו שני הוא הערך המספרי 0, שמציין את סוף המחרוזת), ו-go הוא מצביע שמכיל את המקום של המערך הזה בזכרון (מעשית, הוא מצביע לאיבר הראשון במערך).לא צריך typedef בשביל להשתמש במצביעים (למיטב זכרוני, אין שום דבר שמחייב שימוש ב-typedef, אבל הוא כן מפשט את העבודה).
פורסם 2011 בספטמבר 614 שנים זה בערך כמו לשאול: "מה זה עוזר לי שאני משתמש במיקרוגל?"לכל דבר יש שימוש, צריך רק להבין איך הוא פועל ולמה הוא נועד. לפי השאלות שלך, אתה רק בתחילת הלימוד, ומנסה לקפוץ קדימה בלי להבין את הבסיס. תלמד בצורה מסודרת ואז תבין את המשמעות של הדברים.
פורסם 2011 בספטמבר 614 שנים להגיד "למדתי C אבל אני לא מבין מצביעים" זה כמו להגיד "למדתי חשבון אבל אני לא יודע כפל וחילוק". זה חלק כל-כך בסיסי, שהלימודים שלך אפילו לא קרובים לשלמים כל עוד אתה לא הבנת אותם.ברור שאתה רוצה להבין, אך לא תתקדם לשום מקום בכך שתשאל שאלות אקראיות מנותקות מהקשר בפורומים. תשב עם ספר, עם הסברים, עם תרגילים, או תעשה קורס מסודר.
פורסם 2011 בספטמבר 614 שנים מחבר אתה צודק, אך הספר שלי הסביר ממש בקצרה את הנושא של מצביעים , לכן אני מתקשה.
פורסם 2011 בספטמבר 714 שנים מה שחשוב להבין על מצביעים זה הקונספט ואז אולי תבין למה זה טוב ומה אפשר לעשות עם זה.מצביע הוא בעצם משתנה שבמקום להחזיק "ערך" מחזיק כתובת בזיכרון (שזה כמובן גם ערך אבל תחשוב על זה בהתחלה בתור כתובת).זאת אומרת חוץ מ- int, float, double וכו יש עוד סוג של משתנה מטיפוס כתובת. *int שקול כמעט לחלוטין ל- *float. שניהם מחזיקים כתובת בזיכרון. שניהם בגודל 4 bytes (בהנחה ואתה משתמש במערכת הפעלה של 32 ביט - זה מה שזה אומר בעצם. מערכת ההפעלה משתמשת במרחב זיכרון של 32 ביט = 4 בייט).
פורסם 2011 בספטמבר 714 שנים על מה אתה מדבר?למצביע צריך להיות טיפוס מסוים. נניח שיש לך מצביע בשם x, ואתה מנסה לגשת אל הערך שעליו הוא מצביע (באמצעות x*). מה הטיפוס של x*? האם הוא int? אולי float? איך אפשר לדעת?בשביל זה למצביע חייב להיות טיפוס. מצביע הוא מצביע לטיפוס מסוים, לדוגמה *int הוא מצביע ל-int. אם x הוא *int, זה אומר ש-x* (הערך שעליו מצביע x) הוא מטיפוס int.הבהרה: כשאומרים "מצביע ל-int" מתכוונים "מצביע למקום בזכרון שבו אמור להיות מאוכלס משתנה מטיפוס int". או אפילו יותר מדויק: "מצביע למקום בזכרון שעל הקומפיילר להתייחס אליו כ-int".
פורסם 2011 בספטמבר 714 שנים הקומפיילר חייב לדעת מאיזה טיפוס הוא המצביע כי יש אופרטורים שמותר להפעיל על פוינטרים.דירפרנס &, ++ וכו.ב- C++ גם void* הוא חוקי.
פורסם 2011 בספטמבר 714 שנים מחבר שניצל : עכשיו הבנתי , תודה רבה , אני ממש מעריך את מה שאתה כאן פשוט עבודה של מעל ומעבר תודה רבה לך.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.