#include< stdio.h>
 #include< stdlib.h>

 int crp(int mtrs [],int size)
 {&# XA; int a = 1;
 int i;

对于(I = 0; I<大小; ++ I)
 {
 A * =中期审查[I];
 }

返回a;
}

 int main()
 {
 int k,size;
 int ** mtrs;

 printf(“输入矩阵的大小:”);
的scanf( “%d”,&安培;大小);

中期审查=(INT **)的malloc(大小*的sizeof(INT *));

 if(mtrs == NULL)
 printf(“Yetersiz bellek!”);

 printf(“输入矩阵的输入数字:”);

为(K = 0; K<大小; k ++)
 {
 mtrs [k] =(int *)malloc(size * sizeof(int));
 if(mtrs [k] == NULL)
 printf(“内存不足!”);
 }
 for(k = 0; k


 我遇到访问冲突读取位置0xFDFDFD的问题。

 
它停留在* = mtrs [i]的位置; ..程序的目标是乘以输入的数字


我是不确定我是否以正确的方式使用malloc。

答案 0 :(得分:1)
此代码段无效
for(k=0;k<size;k++)
{
scanf("%d",&mtrs[k]);
&&&&&&&&
}
你应该写例如
int m;
//...
for(k=0;k<size;k++)
{
for ( m = 0; m < size; m++ )
{
scanf("%d", &mtrs[k][m]);
}
}
同样适用于此循环
for(k=0;k<size;k++){
printf("%d ",mtrs[k]);
}
应该看起来像
for(k=0;k<size;k++)
{
for ( m = 0; m < size; m++ )
{
printf("%d ",mtrs[k][m]);
}
printf( "\n" );
}
该功能应定义为
long long int crp( int * mtrs[],int size)
^^^^^^^^^^^^^ ^^^^^^^^^^^^
{
long long int a=1;
int i, j;
^^^^^^^^^
for(i=0;i<size;++i)
{
for ( j = 0; j < size; j++ )
{
a*=mtrs[i];
}
}
return a;
}
函数的结果应该像
一样输出printf("Elemanlar carpimi %lld dir.",crp(mtrs,size));
^^^^^
答案 1 :(得分:1)
我不完全明白你的代码点是什么,但你有各种各样的错误和逻辑问题。
printf("%d ",mtrs[k]);
和scanf("%d",&mtrs[k]);
期待int
但您通过了*int
(又名int[]
),您可能需要使用2个嵌套{{}插入/读取值1}}循环。for
上一个周期为printf("Elemanlar carpimi %d dir.",crp(mtrs[k],size));
,根据for(k=0;k<size;k++)
,所以k = size
超出界限,导致应用程序崩溃。