2011-04-07 131 views

回答

0
int** matrix = malloc(sizeof(int*) * COLUMN_SIZE); 
matrix[0] = malloc(sizeof(int) * COLUMN_SIZE * ROW_SIZE); 

int* temp = matrix[0]; 
for (int i=1; i < COLUMN_SIZE; i++) 
{ 
    matrix[i] = temp; 
    temp += ROW_SIZE; 
} 

現在你要在矩陣的線性陣列[0]還可以使用要麼喜歡矩陣的線性指標尋址[0] [ INDEX]其中索引介於0和(COLUMN_SIZE * ROW_SIZE)之間,或者可以使用矩陣[COLUMN_INDEX] [ROW_INDEX]對其進行尋址。

0

當線性1D索引稱爲index和2D索引rowcol,在它們之間傳輸的公式是

index = row * (MAX_ELEMENTS_PER_ROW) + col; 

和另一方向

row = index/MAX_ELEMENTS_PER_ROW; 
col = index % MAX_ELEMENTS_PER_ROW; 

的指針運算完成由+上的指針和[]運算符。

我給你作爲家庭作業的實際編碼;-)。

1

假設你要一個10×15矩陣(10行,15列),用於分配存儲器:

int numRows = 10; 
int numColumns = 15; 
int *matrix = malloc(sizeof(int) * numRows * numColumns); 

要訪問的任何元件,由列數相乘所需的行,並添加列號:

//access row 3, column 5: 
int value = matrix(3 * numColumns + 5); 

那就是它。