2012-09-13 29 views
0

我有一個數組,int* array,有超過10.000 INT的值,但我想指向每個100位的特定值,則意味着以後會有int ** matrix,其中:
matrix[i][j],我想i從我的矩陣指向array[i * 100],y如何替換地址?這裏是我做了什麼:指向數組

u_int8_t **matrix = (u_int8_t **)malloc(width * sizeof(u_int8_t *)); 

int width_cr = 0; 
for (int i = 0; i < width; i ++) { 
    if (i % 100 == 0) { 

     u_int8_t *position = matrix[width_cr]; 
     position = &array[i]; 
     width_cr ++;   

    } 
} 

的問題是,它指向數組

+2

[你不應該投malloc的返回(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – Eregrith

+2

無關,但你應該改變你的循環增加到'i + = 100'並刪除'if'。 – verdesmarald

+0

@RichardChambers我很確定OP只是想構建一個索引到現有1d數組的2d數組。 – verdesmarald

回答

2

商店array[i]matrix[i/100]地址的開始。

#define HOW_MUCH_NUMBERS 10000 

[...] 
{ 
    int array[HOW_MUCH_NUMBERS]; 
    int i = 0; 
    int **matrix; 

    matrix = malloc(sizeof(*matrix) * (HOW_MUCH_NUMBERS/100)); 
    while (i < HOW_MUCH_NUMBERS) 
    { 
    matrix[i/100] = &array[i]; 
    i += 100; 
    } 
    [...] 
} 
+0

謝謝,回覆,這正是我需要的! – Florik

+0

爲什麼downvotes ??? – Eregrith

+0

不能說,應該要求那些低調的人 – Florik