Δημοσιεύτηκε: 30 Ιαν 2012, 20:30
To * δεν προβάλλει τα περιεχόμενου ολόκληρου του string, αλλά μονάχα τα περιεχόμενα του 1ου χαρακτήρα μέσα στο string.
Οπότε, είτε γράψουμε: message[0], είτε γράψουμε: *message, το αποτέλεσμα είναι ο χαρακτήρας: 'M'
Τώρα σε ότι αφορά την ερώτηση περί εκτύπωσης, η: puts() είναι έτσι φτιαγμένη ώστε όταν της περνάς σαν όρισμα ένα c-string, να το τυπώνει ολόκληρο, και στο τέλος να τυπώνει και μια αλλαγή γραμμής. Και σημείωσε πως της περνάς σαν όρισμα το: message και όχι το *message.
Ουσιαστικά αυτό που κάνει η συνάρτηση είναι να ξεκινάει από την αρχή του c-string: message και να τυπώνει έναν-έναν κάθε χαρακτήρα, μέχρι να βρει μηδενικό χαρακτήρα. Μόλις τον βρει, τυπώνει μια αλλαγή γραμμής και επιστρέφει.
Για αυτό και στην τεκμηρίωσή της γράφει ότι το όρισμά της πρέπει να είναι string (και όχι χαρακτήρας). Όλες οι συναρτήσεις strings είναι φτιαγμένες έτσι ώστε να περιμένουν ως όρισμα ένα c-string.
Οπότε, είτε γράψουμε: message[0], είτε γράψουμε: *message, το αποτέλεσμα είναι ο χαρακτήρας: 'M'
Τώρα σε ότι αφορά την ερώτηση περί εκτύπωσης, η: puts() είναι έτσι φτιαγμένη ώστε όταν της περνάς σαν όρισμα ένα c-string, να το τυπώνει ολόκληρο, και στο τέλος να τυπώνει και μια αλλαγή γραμμής. Και σημείωσε πως της περνάς σαν όρισμα το: message και όχι το *message.
Ουσιαστικά αυτό που κάνει η συνάρτηση είναι να ξεκινάει από την αρχή του c-string: message και να τυπώνει έναν-έναν κάθε χαρακτήρα, μέχρι να βρει μηδενικό χαρακτήρα. Μόλις τον βρει, τυπώνει μια αλλαγή γραμμής και επιστρέφει.
Για αυτό και στην τεκμηρίωσή της γράφει ότι το όρισμά της πρέπει να είναι string (και όχι χαρακτήρας). Όλες οι συναρτήσεις strings είναι φτιαγμένες έτσι ώστε να περιμένουν ως όρισμα ένα c-string.