migf1 έγραψε:Ilias95 έγραψε:@migf1
Μου πήρε αρκετή ώρα αλλά τελικά νομίζω ότι επιτέλους κατάλαβα πως δουλεύει.
Το κλειδί στην κατανόησή του είναι η κατανόηση του πως δουλεύει το pointer-arithmetic.
Από τη στιγμή που...
α) ο 2-διάστατος πίνακας a[NROWS][NCOLS] όπως ξέρουμε εσωτερικά υλοποιείται μονοδιάστατα σε συνεχόμενη μνήμη, συνολικού μεγέθους (NROWS * NCOLS) * sizeof(int) bytes
β) το p ορίζεται δείκτης σε πίνακα NCOLS ακεραίων (δηλαδή ανά πάσα στιγμή δείχνει σε τμήμα μνήμης μεγέθους NCOLS * sizeof(int) bytes)
τότε κάθε p++ προχωράει στη μνήμη κατά NCOLS ακέραιους, που επί της ουσίας είναι μια γραμμή του πίνακα a[ ] [ ] (το p-- θα πήγαινε πίσω κατά NCOLS ακέραιους).
Δηλαδή κάθε ++ του p προχωράει αυτόματα τον p κατά NCOLS * sizeof(int) bytes στη μνήμη
Ναι, σωστά το κατάλαβα τελικά.
Ευχαριστώ.



