gpt4 book ai didi

c - 使用结构体添加两个二维数组时出现段错误 11

转载 作者:行者123 更新时间:2023-11-30 15:42:35 26 4
gpt4 key购买 nike

我一直在开发一个对矩阵进行数学运算的程序,并决定创建一个包含计算所需信息的结构:

在matrices.h中:

 struct Matrix{
int x; //x
int y; //y
int **matrix; //hold matrix values
};

我可以使用输出命令打印出矩阵的值:

void output(struct Matrix* matris){
int c,d;
for (c=0;c<matris->x;c++){
for(d=0;d<matris->y;d++){
printf(" %d ",matris->matrix[c][d]);
}
printf("\n");
}
printf("\n Press any key to continue...");
scanf("%d",&c);
}

但是,此函数因段错误 11 而失败,在该错误中进行了添加。

 void doAddition(struct Matrix* moutput, struct Matrix* matrixa, struct Matrix* matrixb){
int c,d;
for(c=0;c<matrixa->x;c++){
for(d=0;c<matrixa->y;d++){
moutput->matrix[c][d] = (int)matrixa->matrix[c][d] + (int)matrixb->matrix[c][d];
}
}
}

任何帮助将不胜感激。

编辑:

错误日志:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000100200000
0x0000000100001392 in doAddition (moutput=0x7fff5fbff800, matrixa=0x7fff5fbff820, matrixb=0x7fff5fbff810) at matrices.c:109
109 moutput->matrix[c][d] = (int)matrixa->matrix[c][d] + (int)matrixb->matrix[c][d];

最佳答案

有错别字:

doAddition()中的这一行

for(d = 0; c < matrixa->y; d++){

应该是

for(d = 0; d < matrixa->y; d++){

提示:给自己更多的“空间”,这可以增强可读性,并降低误读的风险。

提示^2:了解如何使用调试器(例如 gdb )并使用它。它使您有可能检查程序崩溃行周围的变量值。

关于c - 使用结构体添加两个二维数组时出现段错误 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20101163/

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