Jaman פורסם 2007 באוקטובר 14 Share פורסם 2007 באוקטובר 14 הגדרתי:typedef struct{ int x; int y;}coord;והפונקציה:void DrawLine(SDL_Surface* screen, coord p1, coord p2)ולצורך העניין אני מקבל נקודות שבהם נלחץ העכבר (אני מקבל x ו y בנפרד, לא בצורה שהגדרתי למעלה).עכשיו השאלה שלי היא האם יש דרך לשלוח לפונקציה את הקוארדינטות בלי ליצור משתנה זמני ולשים בו את הנתונים ולשלוח אותו?לדוגמה האם אני יכול לעשות:DrawLine(screen, [x1, y1], [x2, y2])או משהו בסגנון? קישור לתוכן שתף באתרים אחרים More sharing options...
SweeT_EviL פורסם 2007 באוקטובר 15 Share פורסם 2007 באוקטובר 15 אתה רוצה לשלוח לפונקציה שני STRUCTים ולקבל אותם בתוך הפונקציה כהערכים של אותו STRUCT? אם כן אז התשובה היא לא, אי אפשר לעשות את זה. קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2007 באוקטובר 15 Share פורסם 2007 באוקטובר 15 תעבור ל-C++. שם אתה יכול לעשות את זה (כל עוד הגדרת constructor מתאים). קישור לתוכן שתף באתרים אחרים More sharing options...
Jaman פורסם 2007 באוקטובר 15 מחבר Share פורסם 2007 באוקטובר 15 אתה רוצה לשלוח לפונקציה שני STRUCTים ולקבל אותם בתוך הפונקציה כהערכים של אותו STRUCT? אם כן אז התשובה היא לא, אי אפשר לעשות את זה.אם הבנתי נכון מה שכתבת פה אז אני התכוונתי לההפך.תעבור ל-C++. שם אתה יכול לעשות את זה (כל עוד הגדרת constructor מתאים).אני גם ככה עובד עם Visual C++, אז למה לא.. אתה יכול לתת לי דוגמה לאיך לעשות את זה (לצורך העניין אתה יכול להשתמש במה שכתבתי בהודעה הראשונה)? קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 באוקטובר 15 Share פורסם 2007 באוקטובר 15 struct Coord{ int x; int y; Coord(int xx, int yy) { xx = x; yy = y; }}והשימוש:Coord myCoord(5, 6); קישור לתוכן שתף באתרים אחרים More sharing options...
Jaman פורסם 2007 באוקטובר 15 מחבר Share פורסם 2007 באוקטובר 15 אתה מתכוון:x = xx;y = yy;לא?בכל מקרה, איך זה יעזור לי בקשר למה ששאלתי בהתחלה? אני עדיין אצטרך ליצור משתנה זמני ולהעביר אותו לפונקציה..אגב, ב C אפשר להכריז על משתנים בתחילת בלוקים גם אם זה לא בתחילת פונקציה. הייתי רוצה לדעת איך בדיוק הכל עובד בקטע הזה.1- בסוף הבלוק המשתנה מושמד כמו בסוף פונקציה?אם והייתי עושה (למרות שאני יודע שלא מומלץ) GOTO לאמצע בלוק כמו פה למשל:{int i,j;i = 27;j = i+2;printf("%d %d", i, j);...}מה היה קורה?2- מה קורה בדיוק בבלוקים של לולאות שמכריזים בהתחלת הלולאה על משתנה?לדוגמה:while (!Quit){int i=0;i++....} קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 באוקטובר 15 Share פורסם 2007 באוקטובר 15 כן, התכוונתי הפוך.ואתה יכול לעשותmyFunc(screen, Coord(5, 6)); קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2007 באוקטובר 15 Share פורסם 2007 באוקטובר 15 אגב, ב C אפשר להכריז על משתנים בתחילת בלוקים גם אם זה לא בתחילת פונקציה. הייתי רוצה לדעת איך בדיוק הכל עובד בקטע הזה.1- בסוף הבלוק המשתנה מושמד כמו בסוף פונקציה?אם והייתי עושה (למרות שאני יודע שלא מומלץ) GOTO לאמצע בלוק כמו פה למשל:די פשוט - i ו-j מוגדרים אך ורק בתוך הבלוק. כשאתה יוצא מהבלוק הם "נמחקים" (הם הרי לא באמת נמחקים, פשוט הקומפיילר לא ייתן יותר לגשת אליהם, וה-stack מסתדר בהתאם). אם הם היו קלאסים (ב-C++ כמובן), אז ב-destructor שלהם היה נקרא כשאתה יוצא מהבלוק.אני לא יודע בדיוק איך ההתנהגות עם goto, אבל יש לזה פתרון פשוט - אל תשתמש ב-goto (שימוש ב-goto לרוב מראה על תכנון גרוע).2- מה קורה בדיוק בבלוקים של לולאות שמכריזים בהתחלת הלולאה על משתנה?בכל פעם שאתה נכנס ללולאה, המשתנה "נוצר" מחדש. מחוץ ללולאה אתה לא יכול להתייחס אליו.מקרה אחד יוצא דופן הוא המקרה הזה:for (int i = 0 ; i < 5 ; ++i) { // do something}כאן ה-i נמצא רק ב-scope של הלולאה (כלומר אחרי שמסתיימת הלולאה, i אינו נגיש יותר), אבל בניגוד למשתנה שהוגדר בתוך הלולאה, i לא יוגדר מחדש בכל איטרציה, אלא יעבור בין האיטרציות. (אני לא בטוח אם המבנה הזה אפשרי ב-C או רק ב-C++). קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 באוקטובר 15 Share פורסם 2007 באוקטובר 15 רק שים לב שבVC6 התקן עדיין לא היה מוגדר, ולכן אם הגדרת של את הINT אז הוא היה הולך איתך עד לסוף המר של הפונקציה. קישור לתוכן שתף באתרים אחרים More sharing options...
Jaman פורסם 2007 באוקטובר 15 מחבר Share פורסם 2007 באוקטובר 15 כן, התכוונתי הפוך.ואתה יכול לעשותmyFunc(screen, Coord(5, 6));אה אפשר לעשות את זה מאמצע בלוק?טוב אני מניח שזה הדבר הכי קרוב למה שחשבתי עליו בהתחלה.תודה רבה לכולכם על כל התשובות. קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2007 באוקטובר 15 Share פורסם 2007 באוקטובר 15 ב-C++ אתה יכול להגדיר משתנים איפה שבא לך, לא רק בתחילת בלוק. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.