#define ARRAY_SIZE 100
#define ROWS 10
#define COLS 20
int (*array[ARRAY_SIZE])[COLS]; //this one is actually array of pointers to 1D array.
// or
int (*array1[ARRAY_SIZE])[ROWS][COLS];
使用方法:
int main(void)
{
int arr[ROWS][COLS];
array[0] = arr;
array1[0] = &arr;
array[0][5][3] = 5;
(*array1[0])[5][3] = 5;
}
4条答案
按热度按时间eqfvzcg81#
所以如果你有一个数组
那么 expression
arr
的结果将具有类型因为它不是一元
&
运算符的操作数,并且表达式“decay”从类型“array ofT
“到“pointer toT
“(其中T
是int [C]
),而表达式&arr
的结果将具有类型所以这里有两条路。第一种方式是:
或
所有指向的数组都必须有
C
列,但它们可能有不同的行数(不过,您必须单独存储这些信息)。或者,您可以使用
或
在这种情况下,所有指向的数组必须具有
R
行和C
列。2o7dmzc52#
你需要一个指向2D数组的指针数组
使用方法:
af7jpaap3#
在询问如何定义一个指向矩阵的指针数组之前,你必须首先决定如何表示一个独立的矩阵。
在C中,矩阵可以表示为2D数组,例如像这样:
矩阵也可以表示为指针数组,其中每个指针指向
int
数组的第一个元素。这些数组表示矩阵的各个行。下面是一个例子:在这两种情况下,都可以使用表达式
matrix[5][8]
来检索矩阵第6行第9列中的元素。现在,来回答你关于如何定义一个指针数组,其中每个指针指向一个矩阵的问题:
假设所有矩阵的维数都是相同的,那么你可以做以下事情:
如果一个单独的矩阵表示为一个2D数组,那么你可以定义一个指向单独矩阵的指针数组,如下所示:
如果一个单独的矩阵被表示为指向矩阵各行的指针数组,那么你可以定义一个指向单独矩阵的指针数组,如下所示:
oxiaedzo4#
是的,你可以用不同的方式来做。
如果您希望数据在堆中,您将把矩阵转换为指向指针的指针,或者执行内存算术
现在在堆栈中,是这样的:
现在,重要的是,在您想要声明和使用数组时,请记住每个方法的限制、优点和缺点。