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

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



  #8  
ישן 22-06-2007, 00:30
  סאשה הסוס סאשה הסוס אינו מחובר  
 
חבר מתאריך: 14.07.06
הודעות: 1,070
זה מה שקורה כשאנשים פשוט מתעלמים מהכתוב:
בתגובה להודעה מספר 7 שנכתבה על ידי zivbr שמתחילה ב "סאשה נראה כי מתגובה לתגובה..."

אין שום דרך לאתחל "מערך" דינאמי כזה ב-C++‎ מסיבה פשוטה - אפשר לאתחל רק
את המשתנים עצמם. כשכתוב:
T* pT = 0;
המשתנה הוא pT, טיפוסו הוא T*‎, וערכו מאותחל להיות 0. אבל זהו ערכו של המשתנה
pT. הביטוי ‎*pT איננו משתנה שהוגדר, ולכן אי אפשר לאתחל אותו. כנ"ל לגבי הקוד:
T* pT = malloc(N * sizeof(T));
גם כאן pT מאותחל לערך של הכתובת בה הוקצה הזיכרון ל"מערך" המבוקש, אבל
ה"מערך" שניתן לגשת אליו דרך ‎*pT איננו משתנה שהוגדר בקוד, ואי-אפשר לאתחל
אותו. גם אם פתאום נשתמש ב-new במקום ב-malloc זה לא ישתנה:
T* pT = new int[N];
pT הוא משתנה, ואנחנו מאתחלים אותו. ‎*pT זה מקום כלשהו בזיכרון שהוקצה עבורנו,
כתובות נרשמה ב-pT, אבל הוא עצמו איננו משתנה שהוגדר בקוד, ואי אפשר לאתחל אותו.

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

ואגב, השואל לא שאל על מערך אמיתי. מערך אמיתי ב-C++‎ ניתן גם ניתן לאתחל:
int arr[5] = {1,2,3,4,5};
חבל שסתם זיכרון שניתן לגשת אליו בעזרת הקיצור לאריתמטיקת-מצביעים שמאפשר
האופרטור [] איננו באמת מערך.
_____________________________________
סאשה הסוס, סוכן אוסינט.‏

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

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

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

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

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



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

הדף נוצר ב 0.04 שניות עם 12 שאילתות

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

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