如果我在函數以下代碼:訪問元素
int A[5][5];
int i; int j;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
A[i][j]=i+j;
printf("%d\n", A[i][j]);
}
}
這僅僅打印出各指標的總和。我想知道的是,是否有可能以類似於動態數組的方式訪問靜態數組中的每個索引。因此,舉例來說,如果我想訪問A [2] [2],可我說:
*(A+(2*5+2)*sizeof(int))?
我想在靜態分配矩陣進行一些矩陣運算,我覺得用來解引用動態矩陣的方法將最適合我的目的。有任何想法嗎?謝謝。
該數組並非像您聲明的那樣是靜態的。 – 2012-02-28 20:44:46
如果解除引用的指針是指向int的指針,則sizeof()的乘法是不必要的。指針指向的指針類型大小的指針算術步驟。 – dmckee 2012-02-28 20:48:35
@dmckee不僅沒有必要,而且是錯誤的。首先,它不會做他期望的事情,其次,你可以越過數組的邊界並進入未定義的行爲。 – 2012-02-28 20:50:30