-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