פורסם 2005 בינואר 1820 שנים אהה, מה קשור C++? המערך עליו אתה מדבר הוא מערך סטנדרטי של C.שימוש במערך שמומש באמת בC++, (כמו בSTL) יתן לך את התוצאות המבוקשות.בהקשר של מערכים דינמים(או פוינטרים כללים בכלל) אין הבדל בין C++ לC,מהסיבה הפשוטה שC++ היא בסך הכול הרחבה של C.,תיקון שגיעה. C++ אן CPP היא לא הרחבה של C, היא שפה בפני עצמה המבוססת עצמים(OOP) - שהתחביר שלה זהה ל C. כמו כן ה מהדר שלה תומך ב C, זות אומרת שהפקודות שאתה רושם ב C עדיין יעבדו אבל את לא מתכנת ב CPPרלונטי או לא, עקב העובדה ש ב C המערכים אף פעם לא דינמיים - אתה חייב לציין את הגודל של המערך כשאתה מגדיר אותו.פשוט תגדיר משתה שיצין הגודל וכל פעם שאתה מגדיל או מקטין את המערך תשנה את המשנה בהתאם
פורסם 2005 בינואר 1820 שנים "Bell Labs' Bjarne Stroustrup developed C++ (originally named "C with Classes") during the 1980s as an enhancement to the C programming language." מתוך ההגדרה בוויקיפדיה. אתה תמיד יכול להגדיר פוינטר ולהתיחס אליו כאל מערך, אבל זה בדרך כלל נגמר מענין
פורסם 2005 בינואר 1920 שנים ,תיקון שגיעה. C++ אן CPP היא לא הרחבה של C, היא שפה בפני עצמה המבוססת עצמים(OOP) - שהתחביר שלה זהה ל C. כמו כן ה מהדר שלה תומך ב C, זות אומרת שהפקודות שאתה רושם ב C עדיין יעבדו אבל את לא מתכנת ב CPPרלונטי או לא, עקב העובדה ש ב C המערכים אף פעם לא דינמיים - אתה חייב לציין את הגודל של המערך כשאתה מגדיר אותו.פשוט תגדיר משתה שיצין הגודל וכל פעם שאתה מגדיל או מקטין את המערך תשנה את המשנה בהתאםאתה יכול להקצות את המערך דינאמית עם MALLOC(כמובן שאתה צריך להגדיר פוינטר מהסוג שאתה רוצה להקצות).אבל דיברנו על C++ והשאלה דיי נענתה.
פורסם 2005 בינואר 2220 שנים אין אפשרות לעשות את זה.-אם אתה יצרת את המערך את יכול *לשתול* את מספר האלמנטים למשל בתא הראשון כדי לזכור אותו.-אם זה מערך של טקסט אתה יכול לחפש NULL-אם זה מערך סטטי אתה יכול לחשב ע"י sizeof(array)/sizeof(int)אופציה לתכנות מתקדם:אם אתה ממש אבל ממש רוצה לדעת מה האורך של המערך הדינאמי ואתה היחיד שמקמפל את התוכנית. אתה יכול לבדוק עם איזו סיפריה הקומפילר שלך עובד ולראות היכן הוא שומר את גודל הזיכרון שהוא החזיר.לדוגמא: malloc שומר header עם הנתונים על הזיכרון שהוא הקצה ממש מתחת לכתובת שהוא מחזיר. אתה יכול להגדיר struct מהסוג ה- header ולכוון אותו מיקום אחד פחות הזיכרון שחזר אליך.אני לא ממליץ על השיטה מכיוון שהיא תלויית סיפריה.
פורסם 2005 בינואר 2320 שנים למען האמת במערך שהקוצה דינאמית עם malloc נשמר הגודל שלו במקום המינוס 1 (ואולי גם מינוס 2). הסיבה ששומרים את זה היא שאחרי זה שאתה מבצע free אתה לא אומר לו כמה מקום לשחרר אז הוא מסתכל במידע הזה ולפי זה יודע כמה לשחרר.קפיש?
פורסם 2005 בינואר 2320 שנים ואללה, לא ידעתי שהוא שומר את גודל המערך. המקום הזה מוגן דרך כלשהי(אם מנסים לשנותו התוכנית עפה), או שאני יכול לשנות אותו איך שאני רוצה(ואז פונ הFREE תעשה בעיות).
פורסם 2005 בינואר 2320 שנים אני לא יודע בדיוק על כמה בלוקים הוא יושב ואיך הוא מקודד אבל אני יודע שהוא שם.אם תשנה אותו ה-free יתחרפן, יעשה פעולה לא חוקית ומערכת ההפעלה תזרוק אותך.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.