28-03-2015, 19:18
|
|
מנהל משבראש, בלשנות, תכנות ויהדות
|
|
חבר מתאריך: 04.06.06
הודעות: 33,130
|
|
|
בקוד הראשון, אתה עובר ספרה–ספרה משמאל לימין; כל פעם מכפיל את מה שהיה לך ב־10, ומוסיף את הספרה הבאה בתור.
נניח המחרוזת היא "2741"
אתה מתחיל עם 2
מכפיל ב־10 ומוסיף 7 ומקבל 27
מכפיל ב־10 ומוסיף 4 ומקבל 274
מכפיל ב־10 ומוסיף 1 ומקבל 2741
למעשה אין צורך בשני משתנים; היה אפשר לכתוב באופן הבא:
קוד PHP:
long n = 0;
while( *s ) {
n *= 10;
n += *(s++) - '0';
}
בקוד השני, pa ו־pb הם הכתובות של a ו־b, אך *pa ו־*pb הם התוכן, כלומר a ו־b עצמם.
שים לב שישנה שגיאת סינטקסט בהגדרת הפונקצייה; הפרמטר השני הוגדר כ־*int pb במקום int *pb.
אותו הדבר לגבי הקוד השלישי – אתה לא רוצה לערוך השוואות על הכתובות, אלא על התוכן.
לא הבנתי את שאלתך בקוד הרביעי.
השורה הזו מחזירה את הפרש הכתובות, שהוא למעשה אורך המחרוזת; מה היה עוזר לסיים לפניה? לא היית מחזיר כלום..
|