2 次元配列を作成するために calloc と malloc を使用しようとしています。これまでの私のロジックは、最初に calloc で整数ポインターの配列を作成し、次に malloc を使用して 2 番目の次元を作成することでした。これは私のコードです:
enter code here
#include<stdio.h>
#include<stdlib.h>
int main()
{
int N,M,i=0,j=0;
printf("Give the dimensions");
scanf("%d%d",&N,&M);
printf("You gave N: %d and M: %d\n",N,M);
int **a=(int**)calloc(N,sizeof(int*));
for(i=0; i<N; i++)
{
a[i]=(int*)malloc(M*sizeof(int));
}
printf("The array that was created resigns on addresses\n");
for(i=0; i<N; i++)
{
for(j=0; j<M; j++)
{
printf("addr: %p\n",a[i,j]);
}
}
}
これで、必要な配列を確実に作成したいと思います。次元 N=2 と M=2 (単なる例) を指定すると、次のアドレスを取得します (例): (0,0): 0x00001、(0,1):0x00003、(1,0): 0x00001、(1 ,1): 0x00003。したがって、2 次元配列ではなく、位置が 2 つしかない単純な配列を取得します。私のコーディングミスを指摘してもらえますか? 見つからない... :S