コンパイル時にエラーが発生することはありません。プログラムを実行するとクラッシュします。私はgenerate関数から行列を直接印刷しようとしました。そして、それは最初の行と2番目の行を表示しました。誰かが私のプログラムがクラッシュする理由を説明できますか?
これは私のコードである
void generate(int **a)//*Function to generate a matrix a[i][j]=i+j*
{
int i,j;
for(i=0;i<5;i++){
for(j=0;j<4;j++){
a[i][j]=i+j;
}
}
}
void print(int **a)//*print the resulting matrix from generate function*
{
int i,j;
for(i=0;i<5;i++){
for(j=0;j<4;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int main()
{
int *a=(int*)malloc(5*4*sizeof(int));//*allocating memory for a matrix of 4 lines and 5 columns.*
generate(&a);
print(&a);
}
です。あなたが望むから2スターのポインタを受け取ることはありません。コンパイラの警告を確認してください。 –
ポインタ( '&a')へのポインタは二次元配列と同じではありません。 – DyZ