-1
初始化的2D陣列矩陣如下:鑄造2D陣列以雙指針的失敗
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%d ", *(*(matrix + i) + j));
printf("\n");
}
然而下面的代碼失敗:
#define N 3
...
int matrix[N][N] = {};
的矩陣的元素可以如下訪問一個分段錯誤。
int **matrix_pointer = (int **)matrix;
for(i=0; i<N; ++i)
{
for(j=0; j<N; ++j)
printf("%d ", *(*(matrix_pointer + i) + j));
printf("\n");
}
請解釋爲什麼或建議有效的替代方法(帶指針)。
[A「2d數組」與指向指針的指針不同)(https://stackoverflow.com/a/18440456/440558) –
在C中投射大多數不是成功的方式,而只是沉默編譯器。 – alk
因爲它應該。數組不是指針,反之亦然。不要試圖解決類型系統問題。 – StoryTeller