gpt4 book ai didi

c - 如何将矩阵读入结构内的 double** 数组?

转载 作者:行者123 更新时间:2023-11-30 20:59:36 26 4
gpt4 key购买 nike

我有一个内部有 double** mat 数组的结构,它是一个指向 double 值指针的指针。假设矩阵名为 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;
}

最佳答案

你不能用二维数组来做到这一点。

但是,您可以使用指向一维 double 组的指针的一维数组。即使它不是真正的二维数组,它也可以在很多方面像真正的二维数组一样使用。

类似于:

#include <stdio.h>
#include <stdlib.h>
 
struct Matrix {
size_t row;
size_t col;
double **mat;
};
typedef struct Matrix TMatrix;
 
void initMatrix(TMatrix *m, int row, int col) {
m->row = row;
m->col = col;
int i;
m->mat = malloc(m->row * sizeof(double*)); // allocate array of double pointers
for (i=0; i<m->row; ++i)
{
m->mat[i] = malloc(m->col * sizeof(double)); // allocate array of doubles
}
}
 
void freeMatrix(TMatrix m) {
int i;
for (i=0; i<m.row; ++i)
{
free(m.mat[i]);
}
free(m.mat);
}
 
int readMatrix(TMatrix m) {
for(int i=0; i<m.row; i++)
{
for(int j=0; j<m.col; j++)
{
if(scanf(" %lg", &m.mat[i][j]) != 1) return 0;
}
}
return 1;
}
 
 
void printMatrix(TMatrix m) {
for(int i=0; i<m.row; i++)
{
for(int j=0; j<m.col; j++)
{
printf("%f ", m.mat[i][j]);
}
printf("\n");
}
}
 
 
 
int main(void) {
TMatrix a;
initMatrix(&a, 2, 3);
if (!readMatrix(a))
{
printf("input error\n");
return -1;
}
printMatrix(a);
freeMatrix(a);
 
return 0;
}

标准输入

1 2 3 4 5 6

标准输出

1.000000 2.000000 3.000000 
4.000000 5.000000 6.000000

关于c - 如何将矩阵读入结构内的 double** 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com