ABA


"עזרה עם מערכים ו pointers ב C"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #11284 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11284
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   19:58   05.04.13   
אל הפורום  
  עזרה עם מערכים ו pointers ב C  
 
   ערכתי לאחרונה בתאריך 05.04.13 בשעה 20:07 בברכה, The Boss
 
אני אסביר את המצב ואת הפתרון שחשבתי עליו.

יש לי כרגע 10 קודים מסוג long int. (יכול להיות שיהיו קודים נוספים בעתיד).
כל קוד מפעיל פונקציה מסויימת. לפונקציות יש פרמטרים שונים. כל הפונקציות void.

חשבתי ליצור מערך long int עבור הקודים.
מערךpointer עבור הפונקציות. (כמובן שיהיה בהתאמה במיקום למערך הראשון של הקודים).

1. השאלה איך יוצרים מערך pointers (בשפת C בלבד) שמאותחל עם פרמטרים לפונקציות?
2. האם יש דרך טובה יותר?

תודה רבה.

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  אתה רוצה לעשות מערך של מצביעים לפונקציות inno3D 05.04.13 21:34 1
     בדיוק :) The Boss  05.04.13 21:52 2
         זה סתם מסובך ומיותר.. מה בדיוק אתה צריך לעשות? inno3D 05.04.13 22:18 3
             זה נראה לי הכי נכון, The Boss  05.04.13 22:20 4
  לא אפשרי DLN 06.04.13 12:27 5
     אפשר לקבל דוגמא כאשר הפונקציות יהיו עם אותו prototype? The Boss  06.04.13 12:39 6
         מכתב DLN 06.04.13 20:00 7
  אתה יכול להשתמש בC++? Net_Boy  06.04.13 23:37 8
     רק ב C, תודה רבה בכל אופן לשניכם. The Boss  07.04.13 00:13 9
  למה שלא תעשה Struct ואז מערך של ה-Struct הזה? dyermaker  08.04.13 18:56 10
     חזק, אהבתי, אשמח לדוגמא :) The Boss  09.04.13 00:24 11
         זה אמור לעבוד dyermaker  09.04.13 20:15 12
             תודה רבה!!! אני אנסה :) The Boss  09.04.13 23:05 13
                 עכשיו שמתי לב לטעות קטנה dyermaker  10.04.13 01:10 14
                     צודק :) The Boss  12.04.13 02:19 15

       
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   21:34   05.04.13   
אל הפורום  
  1. אתה רוצה לעשות מערך של מצביעים לפונקציות  
בתגובה להודעה מספר 0
 
   שלכל פונקציה יש פרמטרים אחרים?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   21:52   05.04.13   
אל הפורום  
  2. בדיוק :)  
בתגובה להודעה מספר 1
 
  

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   22:18   05.04.13   
אל הפורום  
  3. זה סתם מסובך ומיותר.. מה בדיוק אתה צריך לעשות?  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   22:20   05.04.13   
אל הפורום  
  4. זה נראה לי הכי נכון,  
בתגובה להודעה מספר 3
 
   אני צריך להתאים קוד(מספר) לפונקציה בצורה מסודרת.

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   12:27   06.04.13   
אל הפורום  
  5. לא אפשרי  
בתגובה להודעה מספר 0
 
   או שלכל הפונקציות יהיה את אותו הprototype (טיפוס ופרמטרים) או שתעשה case מסודר וע"פ תקרא לכל פונקציה בנפרד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   12:39   06.04.13   
אל הפורום  
  6. אפשר לקבל דוגמא כאשר הפונקציות יהיו עם אותו prototype?  
בתגובה להודעה מספר 5
 
  

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   20:00   06.04.13   
אל הפורום  
  7. מכתב  
בתגובה להודעה מספר 6
 
  

typedef int (*myfunc)(int, int, int, int);

int function1(int a, int b, int c, int d);
int function2(int a, int b, int c, int d);
int function3(int a, int b, int c, int d);
int function4(int a, int b, int c, int d);

...

int main(void)
{
myfunc func_array[] = {function1,
function2,
function3,
function4};

for ( int i = 0 ; i < sizeof(func_array) ; ++i ) {
func_array[i](param1, param2, param3, param4);
}
}


}


משהו בסגנון


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   23:37   06.04.13   
אל הפורום  
  8. אתה יכול להשתמש בC++?  
בתגובה להודעה מספר 0
 
   אם כן, באמצעות Boost אתה יכול לעשות זה בצורה מאד פשוטה ואלגנטית.

תסתכל פה על התגובה הראשונה והשנייה:
http://stackoverflow.com/questions/356950/c-functors-and-their-uses


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   00:13   07.04.13   
אל הפורום  
  9. רק ב C, תודה רבה בכל אופן לשניכם.  
בתגובה להודעה מספר 8
 
  

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dyermaker 
חבר מתאריך 4.2.03
1644 הודעות
   18:56   08.04.13   
אל הפורום  
  10. למה שלא תעשה Struct ואז מערך של ה-Struct הזה?  
בתגובה להודעה מספר 0
 
   כל מה שאתה צריך בStruct זה פוינטר לפונקציה ועוד שדה לכמות הפרמטרים ואז אחרי אתחול של המערך אתה בקלות קורא לכל פונקציה עם כמה פרמטרים שיש לה..


אם לא ברור לך מה אני מתכוון תגיד אכתוב לך דוגמאת קוד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   00:24   09.04.13   
אל הפורום  
  11. חזק, אהבתי, אשמח לדוגמא :)  
בתגובה להודעה מספר 10
 
   ערכתי לאחרונה בתאריך 09.04.13 בשעה 00:30 בברכה, The Boss
 
תודה רבה

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dyermaker 
חבר מתאריך 4.2.03
1644 הודעות
   20:15   09.04.13   
אל הפורום  
  12. זה אמור לעבוד  
בתגובה להודעה מספר 11
 
   יצירת משתנה מסוג my_custom_func:


typedef struct my_custom_func
{
void *func_address;
int numParams;
}

הצהרה של כמה פונקציות לדוגמה:


void firstFunc (long int param1) {...};
void secondFunc (long int param1, long int param2) {...};
void thirdFunc (long int param1, long int param2, long int param3) {...};

מילוי המערך מהטיפוס שהגדרנו למעלה, my_custom_func


my_custom_func funcArray={
{&firstFunc, 1},
{&secondFunc 2},
{&thirdFunc 3}
};

הקטע קוד שמפעיל את המערך:


{
int i;
for (i=0;i<3;i++)
{
if (funcArray.numParams==1)
(*funcArray.funcAddress)(param1);
if (funcArray.numParams==2)
(*funcArray.funcAddress)(param1,param2);
if (funcArray.numParams==3)
(*funcArray.funcAddress)(param1,param2,param3);
}
}



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

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

למשל לפונצקיה הראשונה שאמורה לקבל רק פרמטר אחד להריץ את הקריאה הבאה:


(*funcArray.funcAddress)(param1,param2,param3);


אם זה עובד בכלל חסכת את כל הלולאה והחיים טובים...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   23:05   09.04.13   
אל הפורום  
  13. תודה רבה!!! אני אנסה :)  
בתגובה להודעה מספר 12
 
  

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dyermaker 
חבר מתאריך 4.2.03
1644 הודעות
   01:10   10.04.13   
אל הפורום  
  14. עכשיו שמתי לב לטעות קטנה  
בתגובה להודעה מספר 13
 
   בלולאה שמריצה את הפונקציות צריך להוסיף את ה-i של הלולאה.. כלומר:


funcArray[i].numParams==1

במקום

funcArray.numParams==1


וכו..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Boss  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.9.08
6889 הודעות, 2 פידבק
   02:19   12.04.13   
אל הפורום  
  15. צודק :)  
בתגובה להודעה מספר 14
 
  

קופון הנחה של 5% ל iHerb
https://goo.gl/Q6Tr1S
הרבה יותר טוב מ Vitacost


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net