Boldemort
Σεβαστός
- Εγγρ.
- 4 Σεπ 2009
- Μηνύματα
- 47.529
- Κριτικές
- 12
- Like
- 42
- Πόντοι
- 1.220
(a) putchar(p); Αυτό δεν είναι έγκυρο, η putchar θέλει char, όχι δείκτη σε char.
(b) putchar(*p); Αυτό είναι έγκυρο, Θα εκτυπώσει τον χαρακτήρα στον οποίο δείχνει ο δείκτης p που είναι ο πρώτος χαρακτήρας του string "abc", άρα θα εκτυπώσει a.
(c) puts(p); Είναι έγκυρο και θα εκτυπώσει όλο το string abc.
(d) puts(*p); Δεν είναι έγκυρο, ίσως να γίνει compile, αλλά θα σκάσει στο τρέξιμο το πρόγραμμα πιθανότατα γιατί η puts εκτυπώνει διαδοχικά byte μνήμης μέχρι να βρει το byte που έχει μέσα την τιμή τερματισμού του string '0'. Λογικά είτε δεν θα βρει αυτήν την τιμή, είτε η θέση μνήμης που θα είναι η ascii τιμή του 'a' δεν θα είναι διαθέσιμη για το πρόγραμμα και έτσι θα σκάσει. Όταν γράφεις puts(*p) είναι σαν να γράφεις puts('a') (αυτό δεν παίζει να τρέξει).
Σωστά. Μια ερώτηση για να σου πιάσω το 100% και οχι το 98 άν ειχες να δηλώσεις μια μεταβλητή χαρακτήρα την οποια μετα θα έπρεπε να εκτυπώσεις μεσω της συνάρτησης putchar πώς θα την δήλωνες? με char c; για παραδειγμα?