我想使用calloc和malloc來創建一個2維數組。直到現在,我的邏輯是首先用calloc創建一個整數指針數組,然後使用malloc創建第二個維度。這是我的代碼:2維陣列與malloc
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
即使您確信系統將成功返回,您也應該檢查返回值是否合適。也是's/resigns/resides /' – dmckee
是的,我會的!謝謝:) – alex777