Δημοσιεύτηκε: 17 Μαρ 2012, 01:23
από Ilias95
Μια μικρή βοήθεια.
Έχω καταλάβει τα βασικά σχετικά με 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 για να είναι ορατό το αποτέλεσμα)