Δημοσιεύτηκε: 08 Σεπ 2011, 18:47
από migf1
Λοιπόν, ο i (που καλύτερα να τον μετονομάσεις σε p) είναι δηλωμένος σαν απλός δείκτης τον οποίον τον βάζεις να δείχνει στον πίνακά σου. Με το που κάνεις αυτή την ανάθεση ο i δείχνει σε έγκυρα περιεχόμενα μνήμης (δηλωμένα μέσω του x, που καλύτερα να το μετονομάσεις σε table).

Δες και τι εννοώ όταν μιλάω για λιτό, αραιωμένο κι ευανάγνωστο κώδικα...
Κώδικας: Επιλογή όλων

#include <stdio.h>

#define EMPTY_ELEMENT -1
#define MAX_ELEMENTS 10

// ----------------------------------------------
int main( void )
{
int table[ MAX_ELEMENTS ] = {1,2,3,4,5,6,7,8,9, EMPTY_ELEMENT};
int *p = table;

if ( !p ) {
puts("*** nothing to do, p is NULL");
return 0;
}

while ( *p != EMPTY_ELEMENT )
{
if ( *p % 2 == 0 ) // εξήγησε γιατί εξετάζεις για υπόλοιπο ίσο με 0 εδώ
printf("\n ...\n %d", *p);

else if ( *p % 2 == 1 ) // εξήγησε γιατί εξετάζεις για υπόλοιπο ίσο με 1 εδώ
printf("\n ...\n %d", *p);

p++;
}

return 0;
}

Είναι ακριβώς ο ίδιος κώδικας με αυτόν που έχεις γράψει στο spoiler του προηγούμενου post ;) ... με διορθωμένο τον έλεγχο για NULL. Πιστεύω η διαφορά σε readability είναι πολύ μεγάλη.