指向C中的多维数组的指针?

问题描述:

可以简单地将指向C中多维数组的指针编写为:

Can a pointer to a multidimensional array in C be written simply as:

double *array;

array是一个n×n矩阵吗?

Where arrayis 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)];
}