Δημοσιεύτηκε: 17 Μαρ 2012, 01:23
Μια μικρή βοήθεια.
Έχω καταλάβει τα βασικά σχετικά με pointers και pointer arithmetic αλλά δεν μπορώ να καταλάβω ακόμα πως δουλεύει το παρακάτω.
Ο ακόλουθος κώδικας μηδενίζει το 2ο στοιχείο κάθε σειράς μιας multidimensional array:
Δεν μπορώ να καταλάβω τι ακριβώς σημαίνει το:
Και σε τι επηρεάζει αφού μετά ο pointer δείχνει αλλού:
Γενικώς μια μικρή επεξήγηση στο πως δουλεύει ο παραπάνω κώδικας θα βοηθούσε.
(Πρόσθεσα και εκτύπωση της array για να είναι ορατό το αποτέλεσμα)
Έχω καταλάβει τα βασικά σχετικά με pointers και pointer arithmetic αλλά δεν μπορώ να καταλάβω ακόμα πως δουλεύει το παρακάτω.
Ο ακόλουθος κώδικας μηδενίζει το 2ο στοιχείο κάθε σειράς μιας multidimensional array:
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#include <stdio.h>
#define NUM_ROWS 3
#define NUM_COLS 3
int main( void )
{
int a[NUM_ROWS][NUM_COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 12, 14}};
int (*p)[NUM_COLS], i = 1, *x;
for (p = &a[0]; p < &a[NUM_ROWS]; p++)
(*p)[i] = 0;
// print array
for (x = a[0]; x <= &a[NUM_ROWS-1][NUM_COLS-1]; x++)
printf("%d ", *x);
return 0;
}
Δεν μπορώ να καταλάβω τι ακριβώς σημαίνει το:
- Κώδικας: Επιλογή όλων
int (*p)[NUM_COLS];
Και σε τι επηρεάζει αφού μετά ο pointer δείχνει αλλού:
- Κώδικας: Επιλογή όλων
p = &a[0]
Γενικώς μια μικρή επεξήγηση στο πως δουλεύει ο παραπάνω κώδικας θα βοηθούσε.
(Πρόσθεσα και εκτύπωση της array για να είναι ορατό το αποτέλεσμα)