1.1 Γράψτε την παρακάτω συνάρτηση μέσα σ’ ένα αρχείο myprog.c και μεταγλωττίστε
το:
void badf(int x, int y, int sum, int diff) {
sum = x + y;
diff = x - y;
}
Γράψτε και μία συνάρτηση main μέσα σ’ ένα αρχείο myprog.c η οποία να υλοποιεί την
παρακάτω διαδικασία (εκφρασμένη σε ψευδογλώσσα) και μεταγλωττίστε το:
Όρισε τις ακέραιες μεταβλητές a, b, sum, diff
Θέσε a=5, b=4, sum=0, diff=0
Κάλεσε badf(a, b, sum, diff)
Τύπωσε sum, diff
Δημιουργήστε το εκτελέσιμο πρόγραμμα myprog και εκτελέστε το. Τι παρατηρείτε;
Μπορείτε να εξηγήσετε το αποτέλεσμα;
1.2 Τροποποιήστε τη συνάρτηση void badf(int x, int y, int sum, int diff) ώστε οι
sum και diff να είναι δείκτες σε ακεραίους, και μετονομάστε την σε goodf.
Τροποποιήστε την main του προγράμματος ώστε να καλεί τη συνάρτηση goodf αντί για την
badf. Τι παρατηρείτε;
1.3 Χρησιμοποιήστε τη συνάρτηση scanf() για να διαβάσετε τους ακέραιους αριθμούς
a, b που εμφανίζονται στην main.
Υπενθυμίζουμε ότι η συνάρτηση scanf() διαβάζει από την είσοδο δεδομένα προς
επεξεργασία. Συντάσσεται με αντίστοιχο τρόπο με την printf() δηλαδή:
scanf("%y", &var);
όπου y είναι σύμβολο που αντιστοιχεί στον τύπο δεδομένων της μεταβλητής var (π.χ. d
για int, f για float, κλπ.). Παρατηρούμε ότι στο δεύτερο όρισμα περνιέται η
διεύθυνση της μεταβλητής var, για να αποθηκευθεί η καταχώρηση και μετά το πέρας της
κλήσης.
Στη C τα ορίσματα περνούν με τιμή: η badf αλλάζει τα δικά της αντίγραφα. Για να
αλλάξει μια συνάρτηση μεταβλητές της main, πρέπει να πάρει τις διευθύνσεις τους (&)
και να γράψει μέσω του δείκτη (*). Είναι ακριβώς ο λόγος που η scanf θέλει &var.
Αριθμός στον οδηγό: Α11.14
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: lab-lab06-myprog ·
Σύνδεσμος: https://progintro.github.io/study/questions/labs/lab-lab06-myprog.html ·
Markdown (GitHub)