נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: הצהרה בפונקציה על מערך

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
bat7
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 28 February 2008
משתמש: מנותק/ת
הודעות: 8
נשלח בתאריך: 28 February 2008 בשעה 22:50 | IP רשוּם
ציטוט bat7

שלום!

איך מצהירים בכותרת הפונקציה על מערך דו מימדי??

ניסיתי כך:

int sum (int a[][], int line)

וזה לא עבד...

אשמח לקבל תשובה!!

חזרה לתחילת העמוד הצג את כרטיס החבר של bat7 חפש הודעות אחרות של bat7
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 28 February 2008 בשעה 23:04 | IP רשוּם
ציטוט אלצ'קו

ב-C אין באמת מערכים דו-מימדיים. מערכים נחשבים second-class types ב-C. אתה צריך להעביר מצביע למצביע או מצביע למערך.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
bat7
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 28 February 2008
משתמש: מנותק/ת
הודעות: 8
נשלח בתאריך: 28 February 2008 בשעה 23:11 | IP רשוּם
ציטוט bat7

אלצ'קו כתב:
ב-C אין באמת מערכים דו-מימדיים. מערכים נחשבים second-class types ב-C. אתה צריך להעביר מצביע למצביע או מצביע למערך.

אז אולי זה נקרא טבלה, או מטריצה...

אבל חייב להיות משהו כזה, לא?

חזרה לתחילת העמוד הצג את כרטיס החבר של bat7 חפש הודעות אחרות של bat7
 
Dark Phoenix
משתמש פעיל
משתמש פעיל


הצטרף / הצטרפה: 22 December 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 50
נשלח בתאריך: 28 February 2008 בשעה 23:35 | IP רשוּם
ציטוט Dark Phoenix

הוא התכוון שמבחינת המידע זה לא באמת מסודר במערך דו מימדי. בעקרון אפשר להגביל את המערך לגודל מסוים ככה:
int sum(int a[100][], int line);

אם אתה לא רוצה אפשר גם לשלוח את המצביע של המערך, שמצביע על האיבר הראשון במערך
חזרה לתחילת העמוד הצג את כרטיס החבר של Dark Phoenix חפש הודעות אחרות של Dark Phoenix
 
bat7
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 28 February 2008
משתמש: מנותק/ת
הודעות: 8
נשלח בתאריך: 29 February 2008 בשעה 00:05 | IP רשוּם
ציטוט bat7

Dark Phoenix כתב:
הוא התכוון שמבחינת המידע זה לא באמת מסודר במערך דו מימדי. בעקרון אפשר להגביל את המערך לגודל מסוים ככה:
int sum(int a[100][], int line);

אם אתה לא רוצה אפשר גם לשלוח את המצביע של המערך, שמצביע על האיבר הראשון במערך

ממש תודה!! עזרת לי מאוד!

חזרה לתחילת העמוד הצג את כרטיס החבר של bat7 חפש הודעות אחרות של bat7
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 29 February 2008 בשעה 00:32 | IP רשוּם
ציטוט אלצ'קו

bat7 כתב:

אלצ'קו כתב:
ב-C אין באמת מערכים דו-מימדיים. מערכים נחשבים second-class types ב-C. אתה צריך להעביר מצביע למצביע או מצביע למערך.

אז אולי זה נקרא טבלה, או מטריצה...

אבל חייב להיות משהו כזה, לא?



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

ב-C לאופרטור [] יש משמעות פשוטה מאוד. המשמעות של הביטוי a[i]‎ שקולה לביטוי ‎*((a) + (i))‎. זה אומר ש-a (ה"מערך" שלך) ו-i (ה"אינדקס") שלך צריכים להיות שני מספרים, שהסכום שלהם יתן כתובת, ובה יהיה המידע שאתה רוצה לדבר עליו.

בדרך כלל a (ה"מערך") מצביע לתחילת המערך, ו-i הוא המרחק מתחילת המערך (לאלמנט המבוקש).

"מערך" דו ממדי יהיה a[i][j]‎. שזה אומר:
‎*(*((a) + (i))) + (j))‎
זה אומר שאתה צריך שיהיה לך "מערך" a שבכל "תא" בו תהיה הכתובת של תחילת "שורה" במערך האמיתי שלך.

קרא את זה: http://c-faq.com/aryptr/dynmuldimary.html
(ואת כל שאר השאלות בנושא)

שים לב לתחביר: בניגוד לבייסיק לדוגמה, בה יש מערכים דו-ממדיים, arr(i,j)‎, מה יש לך את האופרטור [] פעמיים. אין לך מערך דו-ממדי, אלא מערך של מערכים.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 

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

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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