Δημοσιεύτηκε: 21 Μαρ 2012, 21:01
από Ilias95
migf1 έγραψε:Όταν το αρχικοποιείς με διατύπωση δείκτη (*str = "abcd") αντί για διατύπωση πίνακα (str[] = "abcd") το κάνεις read-only, δηλαδή string literal... οπότε δεν μπορείς να το αλλάξεις ;)

Χμμ. Υπάρχει κάποιος συγκεκριμένος λόγος που γίνεται αυτό;

Γιατί ας πούμε ότι πάω να περιγράψω τι γίνεται στον κώδικα:
Κώδικας: Επιλογή όλων
char *str = "String", *p = str;
*p = 'X';
puts(str);

Ο pointer str δείχνει εκεί που είναι αποθηκευμένος ο χαρακτήρας 'S'. Βάζω τον pointer p να δείχνει στο ίδιο σημείο.
Αλλάζω το περιεχόμενο της μνήμης στο οποίο δείχνουν ο str και ο p σε 'X'.
Τέλος εκτυπώνω τους χαρακτήρες απ' τη διεύθυνση μνήμης όπου δείχνει ο str μέχρι να πετύχω NULL.

Που κάνω λάθος;