לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 20-02-2010, 18:41
  איציק2 איציק2 אינו מחובר  
 
חבר מתאריך: 12.02.10
הודעות: 7
עזרה במצביעים

שלום וברכה,
אשמח אם מישו יוכל להסביר לי את הנושא: "מצביעים"..
יש דברים שאני "יודע" כמו תוכי אך לא מבין אותם לעומק ..
ולפני הכל: למה זה טוב להשתמש במצביעים !? מזה נותן לנו ? מה היתרון שבו!?
כמו"כ אשמח להסבר\סיכום בקצרה של החומר איך זה עובד,
[אני יודע שזה & מקבל את הכתובת,וזה * נותן לי ערך הכתובת וכו' ..אבל עדין,הנושא לא ברור לי כ"כ..]

תגידו אם אני אומר נכון:
1: " * " מסמן על משתנה שהוא חייב להיות מצביע ! [כלומר,הוא מקבל רק כתובת של משתנה אחר!]
2:אני יכול להשתמש ב& על משתנה רגיל,למשל ;INT A אם אני עושה ; COUT<<&A אזי הוא גם יביא לי את הכתובת של A .
3:אם אני מגדיר C* -משתנה מצביע,וA משתנה רגיל,אז כשאני עושה למשל C=&A .ואם אני מגדיר C*=100 אז עכשיו A שווה 100.איך זה קורה!? אני יודע שזה מצביע,וזה מקבל כתובת ובלה בלה ..אבל בתכל'ס..!?

תודה (:
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 20-02-2010, 19:04
צלמית המשתמש של hellfrost
  hellfrost hellfrost אינו מחובר  
 
חבר מתאריך: 07.12.09
הודעות: 7,072
בתגובה להודעה מספר 1 שנכתבה על ידי איציק2 שמתחילה ב "עזרה במצביעים"

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

http://en.wikipedia.org/wiki/Pointer_(computing)#Uses

זה אחת הסיבות שחייבים ללמד מתכנתים אסמבלי...

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

התועלת של זה היא שאתה יכול לדבר על המבנה שמכיל את המידע. תחשוב על זה יש לך טיפוסים ששומרים מידע (INT, STRING ) פוינטר הוא טיפוס שמאפשר לך לדבר ולעשות פעולת על המבנה עצמו, ויותר מזה הוא מאפשר לך ליצר מבנים שמדברים על מבנים אחרים (עץ, או רשימה), אתה יכול לייצר טיפוס, שמכיל בתוכו מבנים אחרים.

הסינטקס לפונטרים בC הוא נוראי, ועושה שעטנז בין הגדרה לשימוש.
אבל בגדול יש לך יש שלוש דברים שאתה צריך להיות מסוגל לעשות בישביל מצביעים
1. להגדיר מצביעים, אתה פשוט מגדיר משתנה ששומר כתובת של משתנה מטיפוס מסוים.
ד"א כל המצביעים בתכלס מחזיקים אותו תוכן(כתובת) הטיפוסים השונים של המצביעים זה רק בישביל שבתור מתכנת תדע על מה הוא מצביע.

2. לקחת כתובת של משתנה ולשים אותה במצביע

3. לקבל כתובת של משתנה ולהחזיר את התוכן שאותה כתובת מצביעה עליה.

הנה תקרא פה:
http://boredzo.org/pointers/

עכשיו יש עוד כמה אנשים שחושבים שלעשות פעולות חשבון על מצביעים זה טוב. והם ברובם משוגעים... יש מעט מאוד אנשים שבאמת צריכים את זה, ובישביל הרב זה בעיקר דרך משעשעת לעשות באגים.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 20-02-2010, 23:48
צלמית המשתמש של פסטן
  פסטן פסטן אינו מחובר  
 
חבר מתאריך: 14.12.09
הודעות: 9,751
בתגובה להודעה מספר 11 שנכתבה על ידי hellfrost שמתחילה ב "אתה כמובן צודק, זה משהו..."

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

שפות עיליות הן שפות שלא דורשות ממך התייחסות מפורשת לפרטי מימוש כל (או הרבה מ)הזמן.
בשפות "דור רביעי" והלאה באמת יש נטייה חזקה מאוד ל-GC ושאר ירקות, אבל אלה לאו דווקא
מייצגות את רוב השפות בתעשיה. כאן שולטות שפות "דור שלישי", וביניהן לא בדיוק מדובר ב"ניצחון
גורף" לגישת ה-GC.

אם נשתמש במדד TIOBE לפופולריות של שפות תכנות (אם יש לך משהו יותר טוב, אתה מוזמן
להביא), נגלה את הדברים הבאים:
C ו-CPP מחזיקות יחד ב-26% לעומת ג'אווה שמקבלת רק 17%.
PHP מקבלת 10%, אבל זו שפה שמשמשת לבניית אתרי ווב בלבד.
C# ו-VB מקבלות 5% ו-7% בהתאמה, אך בפועל השימוש בהן גם מצומצם למדי, נדמה לי
(בהשוואה לשימוש בג'אווה בעולם ה-embedded, לדוגמה).
סוגרות את הרשימה פייתון, פרל, JS ורובי - כולן שפות סקריפטינג, כך שלא באמת הייתה
להן ברירה בין GC לניהול זיכרון ידני, וכולן יחד מקבלות רק 13% מהמדד.
(המצב בחיפוש יאהו נראה דומה: http://langpop.com)

בקיצור, בנושאים הללו עדיף להשתמש באמירות קצת פחות נחרצות.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #20  
ישן 21-02-2010, 08:06
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 17 שנכתבה על ידי איציק2 שמתחילה ב "סוףסוף אחד מתייחס לתגובה שלי..."

איציק, אתן את 2 הסנט שלי בהודעה קצרה ככל שניתן.
גם אם כרגע אתה לא מבין את הצורך בשימוש במצביעים, יותר מאוחר אתה תשתמש בזה בצורה בה זה יהיה חובה.
קח למשל את הנושא המגניב "רשימות מקושרות". אין שום דרך לקשר בין אובייקט לאובייקט ברשימה שלך מבלי להשתמש במצביעים (הייתי אומר לך לחפש בגוגל ואפילו בפורום חומר על הנושא הזה, אבל אתה רק תקלל אותי ובלאו-הכי אתם תלמדו את זה בהמשך הסמסטר, אז בשביל מה להקדים את המאוחר?)

כפי שאמרו, אם אתה רוצה לשנות ערך של משתנה במקום מסויים, אתה יכול לשלוח את הכתובת שלו לכל פונקציה, ולקבל את הכתובת ע"י מצביע ולשנות את הערך של אותו משתנה מבכל מקום (מה שאי אפשר לעשות עם משתנים רגילים).
אתה עובד עם מחרוזות ומערכים... גם הם מצביעים ואנחנו מתייחסים אליהם ממש כאל מצביעים.
אתה כבר רואה בתרגילים שלך שאתה מגדיר מראש מצביע שאמור להיות מאוחר יותר מערך, ובמקום מסויים בקוד שלך, אתה מקצה דינאמית את גודלו של המערך לאותו מבציע, ואז המצביע הופך מסתם מצביע - למערך.
יש לזה הרבה מאוד שימוש ב class.

למשל:
קוד PHP:
 class Student
{
      
int id;
      
charfName;
      
charlName;
      
Studentnext;


דוגמא לקוד של מחלקה רגילה ב ++C אשר מכילה פרטים של סטודנט (מספר ת.ז, שם פרטי, שם משפחה ומצביע לתלמיד הבא ברשימה מקושרת).
בזמן ההגדרה של המחלקה - אתה יוצר סתם מצביעים שלא שווים יותר מדי.. ברגע שתרצה לתת שם ערכים, אתה תבצע הקצאה דינאמית לאותם מצביעים ותהפוך אותם למחרוזות (מערכים של charים).

תראה, חבל להקדים את המאוחר. פשוט נסה להבין את הנושא הזה (אם אתה רוצה, אני אתן לך תרגילים טובים בנושא) ואח"כ אתה כבר תבין עד כמה שזה נושא חשוב ב C ו- ++C (בג'אווה כבר לא משתמשים ממש במצביעים אלא ברפרנסים - אבל עד שתגיע לג'אווה, אתה חייב להבין לעומק מצביעים וזה לא באמת כ-זה נושא מסובך. סומך עליך שתצליח).

בהצלחה!!
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #23  
ישן 28-02-2010, 10:18
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 22 שנכתבה על ידי fealls שמתחילה ב "אתה חתיכת חצוף. אנשים הגיבו..."

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

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

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

פורים שמח לכולם!!
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:20

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר