פורסם 2011 בנובמבר 2714 שנים ככה: אני צריך לקלוט מהמשתמש גודל של מערך דו-מימדי (אני לא יודע מה הגודל של המערך הדו מימדי, המשתמש בוחר כרצונו) איך אני מבצע את זה ?
פורסם 2011 בנובמבר 2714 שנים C זה לא low level.הועבר לפורום המתאים.ולשאלתך: בדיוק כמו שהיית קולט מערך חד מימדי, אבל עם שתי לולאות מקוננות.אם השאלה היא איך להקצות מערך כזה באופן דינמי, אז התשובה היא: אי אפשר. אתה צריך להקצות מערך של מצביעים, ואז לכל מצביע להקצות מערך (מה שנקרא "מערך משונן"). אופציה נוספת היא "לשטח" את המערך שלך למערך חד מימדי בגודל a*b (כאשר a ו-b הם מימדי המערך המקורי).
פורסם 2011 בנובמבר 2714 שנים תקצה זיכרון דינאמית, ברגע שיש לך בלוק מתאים בזיכרון אתה יכול לעשות מה שאתה רוצה איתו.אתה אפילו לא חייב לדעת מראש מה הגדלים של המערך הדו מימדי...אם אתה רוצה גישה נוחה לנתונים, תקצה מערך של N פויינטרים, ובכל פויינטר תקצה זיכרון ל M איברים.ככה תוכל לגשת למקומות בצורה המוכרת לך ממערך דו מימדי A[n][m] == cellאל תשכח לעשות free כשסיימת עם הזיכרון.
פורסם 2011 בנובמבר 2714 שנים אם השאלה היא איך להקצות מערך כזה באופן דינמי, אז התשובה היא: אי אפשר. אין כזה דבר שאי אפשר ב C זה רק טיפה מסובך. אם עושים את החשבון מגלים שאפשר, ושזה גם יעיל.
פורסם 2011 בנובמבר 2714 שנים מחבר תקצה זיכרון דינאמית, ברגע שיש לך בלוק מתאים בזיכרון אתה יכול לעשות מה שאתה רוצה איתו. אתה אפילו לא חייב לדעת מראש מה הגדלים של המערך הדו מימדי... אם אתה רוצה גישה נוחה לנתונים, תקצה מערך של N פויינטרים, ובכל פויינטר תקצה זיכרון ל M איברים. ככה תוכל לגשת למקומות בצורה המוכרת לך ממערך דו מימדי A[n][m] == cell אל תשכח לעשות free כשסיימת עם הזיכרון. ועכשיו בעברית? (אין לי יותר מידיי רקע בנושא כן? )
פורסם 2011 בנובמבר 2714 שנים פויינטרים אני מניח שאתה מכיר.האם אתה יודע כיצד מקצים זיכרון לעצמך ? למשל עבור מערך חד-מימדי ?אם לא, קרא על הפקודה malloc.אם כן, כל מה שנותר זה לייצר "מערך של מערכים". מערך של פויינטרים שכל אחד מצביע למערך חד מימדי.קל יותר ממה שזה נשמע.הנה קוד שתוכל להתרשם ממנו - http://pleasemakeanote.blogspot.com/2008/06/2d-arrays-in-c-using-malloc.html
פורסם 2011 בנובמבר 2714 שנים מחבר תודה עוד אחד!האמת שאת החומר הזה עוד לא למדתי כך שכל זה עדיין חדש ליאבל טוב להחכים קצת לפני שנלמד את זה.תודה!
פורסם 2011 בנובמבר 2714 שנים אין כזה דבר שאי אפשר ב C זה רק טיפה מסובך. אם עושים את החשבון מגלים שאפשר, ושזה גם יעיל. התכוונתי שאי אפשר בפקודה אחת, כמו שעושים הקצאה סטטית.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.