#include<stdio.h>
#include<stdlib.h>
int crp(int mtrs[],int size)
{
int a=1;
int i;
for(i=0;i<size;++i)
{
a*=mtrs[i];
}
return a;
}
int main()
{
int k,size;
int **mtrs;
printf("enter the size of the matrix:");
scanf("%d",&size);
mtrs=(int**)malloc(size*sizeof(int*));
if(mtrs == NULL)
printf("Yetersiz bellek!");
printf("enter the input numbers of matrix:");
for(k=0;k<size;k++)
{
mtrs[k] =(int*) malloc(size* sizeof(int));
if(mtrs[k] == NULL)
printf("not enough memory!");
}
for(k=0;k<size;k++)
{
scanf("%d",&mtrs[k]);
}
printf("\n\n");
for(k=0;k<size;k++){
printf("%d ",mtrs[k]);
}
printf("\n\n");
printf("Elemanlar carpimi %d dir.",crp(mtrs[k],size));
return 0;
}
場所0xFDFDFDを読み取るアクセス違反の問題が発生します。 * =のメートル先の場所でstucks配列内のメモリを割り当てることができません
それは、[I]; ...プログラムの目的は、私が正しい方法でmalloc関数を使用していた場合、私はわからない入力された数の乗算
にあります。
あなたは 'mtrs [k]'に 'scanf'し、' mtrs [k] 'も表示します。もう少し考えてみましょう。* mtrs [k] 'とは何ですか? –
この行に 'k'を持つ値はどれですか?' printf( "Elemanlar carpimi%d dir。"、crp(mtrs [k]、size)); '? – alk
http://paste.ofcode.org/dzcB3RgQ627QqcCUqJU6Ljこの方法で正常に動作しますが、6つ以上の入力番号を入力すると機能しません。私はこの問題を解決するためにmallocを使いたいと思っていました... – chatay