Δημοσιεύτηκε: 13 Ιουν 2011, 15:20
Σωστό, με τη διαφορά πως τα string literals (αυτά δηλαδή που δεν είναι αντιστοιχούν σε κάποια μεταβλητή) δεν μπορούμε να τα διαχειριστούμε, αφού δεν αντιστοιχούν σε κάποια μεταβλητή.
Για κάθε string literal ο compiler φτιάχνει μια κρυφή μεταβλητή με όνομα τα γράμματα που περιέχει το string literal για δική του εσωτερική χρήση, π.χ....
ΥΓ. Το έχω ποστάρει κι αλλού θυμάμαι, αλλά όποιος θέλει μπορεί να διαβάσει αυτές εδώ τις δημοσιεύσεις μου περί strings στο φόρουμ της GVRteam.
Για κάθε string literal ο compiler φτιάχνει μια κρυφή μεταβλητή με όνομα τα γράμματα που περιέχει το string literal για δική του εσωτερική χρήση, π.χ....
- Κώδικας: Επιλογή όλων
char *Hello="Hello"; // ισοδυναμεί με: char Hello[6] = { 'H', 'e', 'l', 'l', 'o', '\0' };
ΥΓ. Το έχω ποστάρει κι αλλού θυμάμαι, αλλά όποιος θέλει μπορεί να διαβάσει αυτές εδώ τις δημοσιεύσεις μου περί strings στο φόρουμ της GVRteam.
Star_Light έγραψε:Nα συμπληρωσω και εγω πως συμφωνα με τα πολυ κατατοπιστικα γραφομενα του migf1
και μια συμβολοσειρα απλη χωρις να έχει εκχωρηθει σε έναν πίνακα... παρουσια δηλαδη η μή ενος πίνακα
αποτελεί έναν δείκτη. Πχ
- Κώδικας: Επιλογή όλων
#include<stdio.h>
int main()
{
printf("Hello");
}
το Hello αποτελει συμβολοσειρά (επειδή μπαίνει σε διπλα εισαγωγικα αλλιως σε μονά θα ήταν ξεχωριστες σταθερές χαρακτήρων ο καθενας) ειναι πίνακας που απο μονος του ειναι ενα είδος δείκτη στο 1ο στοιχειο
και αυτο ειναι αρκετό . Ο δείκτης στην ουσια εκφράζει την τοποθεσία στην μνήμη
που είναι αποθηκευμένη μια μεταβλητη. Μια μεταβλητη στην ουσια ειναι ενα κομματι μνήμης
οπου έχει δεσμευτεί απο την χρήστη για αυτο και λεμε πως οι δείκτες δείχνουν σε μεταβλητές.
Δειχνουν δηλαδη σε θέσεις μνημης (οι οποιες έχουν καταληφθει απο αυτες τις μεταβλητες)