指向C中的多维数组的指针?
问题描述:
可以简单地将指向C中多维数组的指针编写为:
Can a pointer to a multidimensional array in C be written simply as:
double *array;
array
是一个n×n矩阵吗?
Where array
is an n by n matrix?
然后我可以通过array[i][j]
访问第i
行第j
列中的元素吗?
And then can I access the element in row i
, column j
, by array[i][j]
?
还是有双指针之类的东西?
Or is there such thing as a double pointer?
答
可以简单地将指向C中多维数组的指针编写为:
Can a pointer to a multidimensional array in C be written simply as:
double *array;
是的
说您有M x N
个数组.您可以使用:
Say you have M x N
array. You can use:
double* array = malloc(M*N*sizeof(*array));
然后,您可以使用以下方法访问元素:
Then, you can access the elements by using:
size_t getArrayIndex(size_t m, size_t n, size_t M)
{
return (m*M+n);
}
double getArrayElement(double* array, size_t m, size_t n, size_t M)
{
return array[getArrayIndex(m, n, M)];
}