gpt4 book ai didi

无法使用 c 将值存储在矩阵中

转载 作者:行者123 更新时间:2023-11-30 16:27:47 25 4
gpt4 key购买 nike

这是我的代码:

typedef struct{

double (*a)[2];
} my_struct;


void update(my_struct* struct1){

struct1 -> a = malloc ( 2*sizeof(struct1->a) );

struct1 -> a[0][0] = 5.0;
struct1 -> a[0][1] = 10.0;
struct1 -> a[1][0] = 3.0;
struct1 -> a[1][1] = 4.0;

printf("%f %f %f\n", struct1->a[0][0], struct1->a[0][1], struct1->a[1][1]);

}


int main(){

my_struct struct1;

update(&struct1);

printf("%f %f %f\n", struct1.a[0][0], struct1.a[0][1], struct1.a[1][1]);


return 0;
}

所以基本上我想做的是拥有一个带有矩阵的结构(我真的想将矩阵的定义与 [r][c] 一起使用,从而使用我进行分配的方式)。

如您所见,我有两个 printf 来查看发生了什么。

在命令行中打印的内容如下:

5.000000 10.000000 3.000000
5.000000 10.000000 0.000000

那么为什么 main() 中打印的值之一为零???

最佳答案

我发现两个问题。

1) malloc 大小不正确

struct1->a 是一个指针,因此 sizeof(struct1->a) 是指针的大小。您想要的是第一个元素的大小。因此,请使用 sizeof(struct1->a[0])(或 sizeof(*struct1->a))

2)索引超出范围

您的代码(在更正 malloc 大小之后)正在创建一个 2x2 矩阵。所以这个访问 struct1 -> a[1][2] 超出了范围

关于无法使用 c 将值存储在矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52626203/

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