【发布时间】:2019-04-11 19:10:10
【问题描述】:
我正在尝试使用方法 zeros (); 创建一个空矩阵;然后在屏幕上显示。什么都没有显示。
double * zeros(int m,int n){
double matrix[3][3] ={0};
return matrix;
}
void printMatrice(int row,int column, double matrix [3][3]) {
for (row=0; row<3; row++)
{
for(column=0; column<4; column++)
{printf("%f ", matrix[row][column]);}
printf("\n");
}
}
MAIN:
int main () {
printMatrice(3,3,zeros(3,3));
return 0;
}
在屏幕上显示:
进程返回-1073741819 (0xC0000005)
这些是警告
方法printMatrice():
--警告:从不兼容的指针类型 [-Wincompatible-pointer-types]| 传递“printMatrice”的参数 3|
方法 zeros():
-- 警告:从具有不兼容返回类型“double *”的函数返回“double (*)[3]”[-Wincompatible-pointer-types]
--警告:函数返回局部变量的地址[-Wreturn-local-addr]|
【问题讨论】:
-
肯定有一些问题 - 无法在
zeros中返回本地数组,将row和column重用为计数器而不是限制很奇怪。但我很难相信什么都没有打印出来。 -
修复编译器警告并重试。
-
这对您有帮助 1. 修复编译器警告 2. 想想您在做什么以及为什么。为什么将每个数字传递给每个函数以及为什么需要它。仔细考虑每一行,这应该有助于解决你正在做的错误和奇怪的事情
-
我只是把我有的警告,我不知道如何解决它们。
-
您的代码表明您只是在学习编程。在 SO 上问这个问题对你的学习会适得其反:这里的大多数人都知道答案,但 QA 网站无法教授答案。有人会用他们的知识来修复你的代码,但你的知识不会增加。最后,“想想你在做什么以及为什么”是最好的建议,但你不需要这样做。