הבדל בין char ל char*

  • פותח הנושא GLev
  • פורסם בתאריך

GLev

New member
הבדל בין char ל char*

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

zagzagzag

New member
מערך של char-ים הוא סטטי

אי אפשר לשנות את הגודל שלו ואי אפשר "לשחק" עם השם שלו (דוגמה בהמשך). דוגמה:
char char_arr[10]; char *char_ptr = (char *) malloc( 10 * sizeof(char) ); // works while ( *char_ptr++ ) printf("%c ", *char_ptr); // doesn't work while ( *char_arr++ ) printf("%c ",*char_arr); // prints char_arr char_ptr = char_arr; while ( *char_ptr++ ) printf("%c ", *char_ptr); // doesn't work char_arr = char_ptr; // works printf("%c", char_ptr[2]); printf("%c", char_arr[2]);​
הבדל נוסף שלא ציינתי הוא שלמחרוזת char* אפשר לשנות את הגודל (עם realloc למשל) או לפנות מהזיכרון. חוץ מזה, אין הבדל. שניהם משמשים להצבעה על איזור מסוים בזיכרון. לא כ"כ הבנתי את השאלה על xor
 
למעלה