Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α19.5 · Δείκτες σε δομές: διαφορά ημερομηνιών

Διάλεξη 19, διαφάνειες 42–43 · Δυσκολία ★★☆ · trace · Κεφάλαια: 19

Οι δείκτες μπορούν να συνδυαστούν με δομές όπως όλοι οι άλλοι τύποι. Τι θα τυπώσει το παρακάτω πρόγραμμα;

#include <stdio.h>
#include <stdlib.h>
typedef struct { int day; int month; int year; } Date;
int main() {
  Date d1 = {1, 10, 2023};
  Date * d2 = &d1;
  (*d2).day = 2;
  Date * d3 = malloc(sizeof(Date));
  *d3 = *d2;
  (*d3).month = 12; (*d3).day = 11;
  printf("Diff: %d/%d/%d\n", (*d3).day - d1.day, (*d3).month - d1.month, (*d3).year - d1.year);
  return 0;
}

Υπόδειξη

Ξεχωρίστε πού δείχνει κάθε δείκτης: το d2 σε υπάρχουσα μεταβλητή, το d3 σε νέα μνήμη. Αλλάζει το d1 όταν γράφετε μέσω του d2; Τι αντιγράφει το *d3 = *d2;

Αριθμός στον οδηγό: Α19.5 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec19-date-pointers · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec19-date-pointers.html · Markdown (GitHub)