【发布时间】:2017-10-04 18:00:57
【问题描述】:
我有一个内部有 double** mat 数组的结构,它是一个指向双精度值指针的指针。假设矩阵叫m,我可以用m.mat[i][j]把值放入数组吗?
struct Matrix {
size_t row;
size_t col;
double** mat;
};
typedef struct Matrix TMatrix;
int readMatrix(TMatrix m) {
for(int i=0; i<m.row; i++)
{
for(int j=0; i<m.col; j++)
{
if(!scanf("%lg ", (m.mat[i][j])))
return 0;
}
}
return 1;
}
【问题讨论】:
-
请不要发布代码图片的链接。编辑问题,并将代码放入问题中。
-
我的错,第一次在 StackOverflow 上发帖
-
但是数组不是一个异常,因为它是一个指针数组? 一个数组不是一个指针。数组是一个内存区域。它有一个地址,并且在某些情况下使用C代码中的数组衰减到那个地址。指针是一个可以保存地址的变量。再说一遍:数组不是指针。
-
另外,您应该将
m作为指针传递:int readMatrix(TMatrix* m) ... for(int i=0; i<m->row; i++) ... if( scanf("%lg", &(m->mat[i][j])) != 1)。我有点好奇您实际上是如何为该结构分配内存的。 -
注意:
i<m.col->j<m.col