2017-03-07 63 views
-1

嗯,我正在努力与指针,为什么最后的功能最大(这是虚拟函数的是)? (退出代码6) 泰求助指针退出代码6

代码:

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];'最后一个元素是'tempretures [6] [23]'。所以接下来的最后一个元素是'tempretures [6] [24]' – BLUEPIXY

+0

我真的错过了,谢谢! –

回答

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

这将运行过去的数组的结尾方式,当它击中的行号7的每一个元素,才会停止,但没有第7行。

+0

我真的错过了,谢谢! –