לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 20-05-2012, 23:54
צלמית המשתמש של פסטן
  פסטן פסטן אינו מחובר  
 
חבר מתאריך: 14.12.09
הודעות: 9,751

תראה, יש שתי דרכים להסתכל על זה:

אם המטרה שלך היא ללמד לכתוב קוד יפה וטוב, אז יש שני דברים שאפשר לעשות כדי
למנוע הסתבכויות כאלה ב-C.

הראשון הוא להשתמש ב-typedef כדי להקל על הצורך לעקוב אחרי כמות הכוכביות
כשמתעסקים עם מצביעים. ברגע שאתה מגדיר typedef int* array_of_int;‎
ו-typdef double * dobule_out;‎, אתה לא צריך לדעת שפרמטר out של מערך
של int צריך להיות typdef int** array_of_int_out;‎ כי אתה פשוט אומר
typedef array_of_int* array_of_int_out;‎.

כנ"ל לגבי מחרוזות. אם אתה רוצה להוציא מחרוזת אתה צריך להשתמש בפרמטר מסוג
char**‎ (לדוגמה: void get_string(char** buf, size_t size);),
אבל אם אתה לא מבין למה צריך שתי כוכביות, ה-typdef-ים עונים על השאלה:
typdef char* c_string;
typedef c_string* c_string_out;

הדבר השני הוא להשתמש ב-struct-ים ובפונקציות כדי לעטוף דברים מגעילים כמו מערכי
C. מערך ב-C ברוב המקרים 'דועך' למצביע, ואין לו גודל. בגלל זה כל הזמן צריך לדאוג
שיהיה פרמרט נוסף של גודל. זה מעצבן ומוביל לשאלות ותשובות כמו למעלה.

יותר קל להגיד דבר כזה:
typedef struct
{
int * arr;
size_t size;
} array_of_int;

ולסדר פונקציות כאלה (בערך!):
array_of_int create_array_of_int(size_t size)
{
array_of_int new_arr = {0};
new_arr.arr = (int*) malloc(size * sizeof(int));
if (new_arr.arr != NULL)
{
new_arr.size = size;
}
return new_arr;
}
אתה מעביר 2 בייט גם ככה וגם ככה, אבל עם ה-struct אתה לא שוכח בטעות להעביר
את הגודל...

אם המטרה שלך היא לעשות תרגיל שמלמד אנשים כמה כוכביות לשים בכל מקום (ויכולות
להיות הרבה יותר מ-2), אתה צריך לעקוב אחרי כל הסיפור בזהירות רבה.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה(קרדיט למרשי)
אמר לה ינאי מלכא לדביתיה אל תתיראי מן הפרושין ולא ממי שאינן פרושין אלא מן הצבועין שדומין לפרושין שמעשיהן כמעשה זמרי ומבקשין שכר כפנחס

אמר פסטן: שניהם גרועים, אבל עדיף להיות טיפש מאשר שקרן.
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 18:02

הדף נוצר ב 0.04 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר