אשמח אם מישהו יעשה לי קצת סדר:

ההבדל הוא במספרים השליליים
unsigned char הוא משתנה באורך 8 ביטים, ולכן יכול לייצג את הערכים שבין 0 ל 255.
signed char הוא גם משתנה באורך 8 ביטים, אבל בגלל שביט אחד משמש לייצוג הסימן (פלוס או מינוס), טווח הערכים שהוא יכול לייצג הוא בין 128- ועד 127.
&nbsp
char לבד ללא הגדרה ספציפית הוא signed char, זה הדיפולט של השפה.
&nbsp
כל אלו לא חייבים להיות דווקא 8 ביטים, אבל זה המקובל בכל המערכות שאני מכיר שבשימוש כיום.
 
תודה רבה, ושאלה נוספת - הפעם על רשימה מקושרת:

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

BravoMan

Active member
כן, לא, אולי, למה?

השאלה שלך אינה ברורה.
&nbsp
מה זה אומר "הורסת"?
אם הפעולה משנה נתונים בתוך איברי הרשימה, הרי שהדרך היחידה לשמור את הרשימה המקורית היא ליצור עותק של הרשימה לפני השינוי (או לפחות עותק של האיברים שאתה הולך לשנות.
&nbsp
אם הפעולה שלך משנה את סדר איברי הרשימה ע"י החלפת הקישור בניהם (מצביעי next \ priv) הרי שתצטרך עוד רשימה שמצביע לאותם איברים אבל בסדר המקורי.
&nbsp
בקיצור, כלל די פשוט:
כל מידע שאתה הולך לדרוס, אם תרצה לחזור אליו, תצטרך לשמור עותק שלו.
&nbsp
גם מצביע הוא מידע. הוא מספר ככל המספרים. אז הכלל לגביו זהה.
 
התשובה בגוף השאלה
אם אתה מחזיק מצביע לרשימה המקורית, ואז הורס את הרשימה, המצביע יצביע לרשימה הרוסה.
&nbsp
מצביע לא מכיל עותק של המידע עצמו. מצביע רק מכיל איפה בזיכרון היא נמצאת. אם שינית משהו בזיכרון ההוא, המצביע לא יכול לעזור לך להמציא מידע אחר מזה ששמור בזיכרון.
 
תיקון

לפי התקן של השפה, char הוא תלוי-מימוש, ועשוי להיות signed או unsigned.
בכל מקרה, char,signed char,unsigned char הם שלושה טיפוסים שונים.
 
למעלה