2017-03-07 5 views
-1

Eh bien, je suis aux prises avec les pointeurs, pourquoi la fonction n'est-elle pas la plus grande à la fin (oui de cette fonction fictive)? (Code de sortie 6) Ty aidePointers exit code 6

code:

int search(int const a[], int n, int key) { 

    for (int *i = a; i < a + n; i++) { 
     if (key == *i) return 1; 
    } 
    return 0; 
} 

void print_row(int const a[], int n, int row) { 

    for (int *i = a + n * row; i < a + n * (row + 1); i++) { 
     printf("%d ", *i); 
    } 
    printf("\n"); 
} 

void biggest(double x, long *int_part, double *frac_part) { 

    *int_part = (long) x; 
    *frac_part = x - *int_part; 
} 

main() { 

    int tempretures[7][24]; 

    for (int *i = &tempretures[0][0]; i < &tempretures[7][24]; i++) { 
     static int j = 1; 
     *i = j; 
     j+=2; 
    } 
    tempretures[6][5] = 32; 
    for (int i = 0; i < 7; i++) { 
     for (int j = 0; j < 24; j++) { 
      printf("%d ", tempretures[i][j]); 
     } 
     printf("\n"); 
    } 

    printf("Is it: %d\n", search(tempretures, 7*24, 32)); 
    for (int i = 0; i < 7; i++) { 
     print_row(tempretures, 24, i); 
    } 
    long a = 0; double b = 0; 
    biggest(5.67, &a, &b); 
    printf("%li", a); 
} 
+1

'int tempretures [7] [24];' dernier élément est 'tempretures [6] [23]'. Donc, à côté des derniers éléments est 'tempretures [6] [24]' – BLUEPIXY

+0

J'ai vraiment raté ça, merci! –

Répondre

0
for (int *i = &tempretures[0][0]; i < &tempretures[7][24]; i++) { 
    static int j = 1; 
    *i = j; 
    j+=2; 
} 

Cela va façon après la fin du tableau, arrêtant seulement quand il frappe tous les éléments du numéro de la ligne 7, mais il n'y a pas de ligne numéro 7.

+0

J'ai vraiment raté ça, merci! –