Δημοσιεύτηκε: 21 Μαρ 2012, 21:01
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.
Που κάνω λάθος;