שאלה ב: cpp

aviel12

New member
שאלה ב: cpp

היי, יש לי שאלה: מצד אחד ניתן לרשום את התחילת התוכנית ב - סי ++ כך: void main(void) { //פקודות } ומצד שני אפשר לרשום כך ?? זאת השאלה שלי int main() { //פקודות } או מצד שלישי כך - שגם זאת השאלה שלי void main() { //פקודות } תודה מראש
 

ליאור ב

New member
הסבר...

void = כלום. ()main = פונקציה ראשית. (void main(void {} פונקציה ראשית המקבלת "כלום" כפרמטר ומחזירה "כלום" כערך מוחזר. אם רושמים void או לא רושמים, בתוך הסוגריים, זה לא משנה. כלום זה כלום. ()int main {} פונקציה ראשית המקבלת "כלום" כפרמטר ומחזירה int כערך מוחזר. ליאור.
 

The_Mighty_Perr

New member
"כלום" זה לא כלום!

בס"ד שלום ליאור! ההבדל בין
void main(void) ו- int main(void) ל- void main() ול- int main()
היא שישנה המלצה תקיפה להשתמש בשיטה הראשונה - כאשר אין פרמטרים הצהר של זאת. לא רק זה אלא המלה השמורה VOID מסמלת במקרה אחר משהו שונה מ"כלום":
void*p;​
במקרה הנ"ל, P הוא מצביע לטיפוס לא ידוע, ולא ל"כלום"... בברכה...​
 

ליאור ב

New member
מצביע לכלום.

כל עוד לא תוכל להגיד לי לאיזה סוג משתנה מצביע אותו מצביע, זה אומר שהוא מצביע לכלום. ליאור.
 

פינצ

New member
לא מדויק

*void הוא מצביע ללא סוג כלומר לא מצביע לכלום אלא מצביע שהתוכנה לא יודעת את סוגו. הוא משמש בדרך כלל כדי להשתמש באותו חלק תוכנה עבור שימושים דומים במצביעים לסוגים שונים. לא ניתן לעשות עליו פעולות שניתן לבצע על מצביעים רגילים (כמו למשל ++ ) אבל הוא עדין מצביע לכל דבר. יתן שהוא לא יצביע לכלום (NULL או לאיזו כתובת שלא נתפסה בצורה מפורשת) אבל הוא עדין מצביע ונתפס שטח בזיכרון עבור המצביע הזה (לא עבור מה שהוא אמור להצביע עליו).
 

yair24

Member
זה ממש לא נכון...

לא רק שזה לא מדויק זה פשוט לא נכון... יש דבר כזה שנקרא *VOID וזה אומר מצביע למשתנה מסוג גנרי (כללי) הדוגמא הכי טובה היא הפונקציה MALLOC שמחזירה *VOID איך לדעתך הפונקציה יכולה להחזיר לך פוינטר לINT או CHAR או בכלל לאיזשהו מבנה שאתה עצמך הגדרת? יאיר צוות "המפתח לבית הספר"
 

ihovav

New member
תם מסתבכים סתם בהסברים שלכם

מצביע - תמיד - יהיה בגודל כתובת במערכת - כלומר 4 בייט במערכות 32 ביט כמו וינדוז ויוניקס - ו 2 בייט במערכת 16 ביט כמו דוס *VOID היא למעשה כתובת - שסוג המידע שמאוכסן בה לא מוגדר אין הבדל מהותי בין *VOID ו *INT (לדוגמא) - אלא בצורה שהמערכת מתייחסת למידע שמאוכסן בכתובת הזו - שזה כולל גם את קידום הפויינטר וכל מה שקשור בזה לסיכום - חשוב להבין שVOID מייצג "כלום" או "ריק" - ומשתמשים בו בפויינטרים כדי לייצג פויינטר גנרי - אבל בכללי VOID בא לייצג כלום
 

פינצ

New member
זה מה שכתבתי לו

וקידום הפוינטר לא ניתן לביצוע מכיוון שזהו מצביע ג´נרי והמערכת אינה יודעת מה הגודל של הדבר עליו הוא מצביע ולכן אינה יודעת בכמה לקדם את הפוינטר. הדבר היחידי שניתן לעשות עם פוינר מסוג void הוא השמה אליו וממנו.
 

TZURYOAV

New member
לא נכון! ה"מערכת" יודעת מה גודל

פוינטר ללא קשר לסוג הפוינטר,חוץ מזה ה "מערכת" לא קשורה לנושא זה קשור למהדר. יואב צור
 

פינצ

New member
אוהו!! מישהו קורא בכלל מה שכתבתי?

אני אמרתי שהוא לא יודע מה גודל הפוינטר??? אני אמרתי שהוא לא יודע מה גודל התא שאליו מצביע הפוינטר. לדוגמה, פונטר ל INT מצביע על תחילת שטח שההתיחסות לכל תא שלו הוא בגודל של INT (16 או 32 ביטים בהתאם למערכת) או פוינטר ל CHAR מצביע על תחילת השטח (שוב, במידה ונתפס שטח) שההתיחסות לכל תא שבו היא בגודל 8 ביטים (או 16 ביוניקוד), פוינטר למבנה מצביע לשטח שגודל תא בו מוגדר לפי אורך המבנה. איזה גודל תא תיתן לתא שמוצבע ע"י פוינטר VOID? שני בתים? בית אחד? 4 בתים? קפיש??? נ.ב. בשביל לכתוב DLL שיוכלו לפנות אליו ב VB לא חייבים את הקובץ שנתת.
 

TZURYOAV

New member
כדאי שגם אתה תקרא קצת

לא צריך את הקובץ שנתתי על מנת לכתוב DLL אבל על מנת לכתוב DLL שגם יעבוד כדאי לקרוא אותו. אני ממליץ גם לך לקרוא אותו,למרות שאתה חושב שאתה יודע הכל.... יואב צור
 

פינצ

New member
1. אני בת

2. כבר שנתיים שאני כותבת COM ו DLL שעובדים לא רק עם VB אלא גם עם כל שפה אחרת (כמעט הכל). הסיבה היחידה שלא עניתי לו זה בגלל שזה ארוך מידי להתחיל להסביר את הכל כאן. 3. אם הייתי יודעת הכל כבר הייתי מליונרית לא? ואם הייתי חושבת שאני יודעת הכל למרות שאני לא יודעת הכל בעצם אז הייתי בת חוה מאושרת. לצערי הרב אני לא יודעת הכל רק מביע את דעתי על דברים ולפעמים יש דברים שאני כן מבינה בהם ולכן אני כותבת גם עליהם. 4. VOID זה דבר שלומדים בקורס C בסיסי מאוד! 5. מה קרה? לא הבנת את מה שכתבתי, אף אחד לא מת מזה, לא צריך להכנס ללחץ ולהתחיל לנסות לרדת על אנשים.
 

TZURYOAV

New member
כל הכבוד!

את רק בהתחלה...חבל מאוד ש COM גוסס....לא נורא בחורה נבונה כמוך תצליח ללמוד גם .NET אין לי ספק, בכל מקרה סתם הייתי במצב רוח קרבי,לא התכוונתי לזלזל ביכולתך. יואב צור נ.ב לעובדה שאת בחורה אין קשר לצורת הניסוח הנוכחית שלי.
 

פינצ

New member
ה COM גוסס?

חבל שלא אמרו את זה למשקיעים שלנו ולכל הלקוחות שלנו ובכלל לכל עשרות אלפי בתי תוכנה שמתשמשים בזה וב +COM. רחמנות על כל אלא שהולכים להיות מובטלים בתעשית ה COM. אז למה זה בכלל לא מדאיג אותי השטויות שאתה כותב? אולי בגלל שאין לי כוונה להתיחס לנפוחים כמוך? יאללה בי, תכתוב מה שבא לך, לי אין יותר כוונה להתיחס לנמוכי מצח.
 

TZURYOAV

New member
גבירתי מדוע הבוטות?

דווקא ניסיתי להיות נחמד....בכל מקרה COM גוסס, לא דיברתי על COM+ COM+ הוא יותר אוסף של שירותים שמערכת ההפעלה מספקת מאשר מתודולוגיית תכנות,זה לפחות מה שאמר לי DON BOX בפגישה האחרונה שלנו .NET יביא לקיצו של COM אני מקווה שזה ברור לך,אין זה אומר ש בטווח הקרוב לא יכתבו תוכנות בעזרת טכנולוגיית COM אבל ברור ש COM עבר את שיאו תודה יואב צור
 

arie26

New member
cpp

שלום כידוע לך בשפות C,C++ יש מושג הנקרא החזרת ערך של פונקציה. כמו כן MAIN זה גם פונקציה .לכן מקובל לרשום בדרך כלל : void main(void) פונקצייה אינה מחזירה ערך. פונקציה שמחזירה ערך כל שהוא כגון: ()int main ()int main } ;int a,b if (a>b) ;return a else ;return b { זה הכוונה להחזרת ערך של פונקצייה .
 
למעלה