我試圖製作一個使用二維數組作爲其級別基礎的遊戲。但是,它的大小需要能夠在不同層次上變化。 經過一番研究,我發現this question似乎與我有同樣的問題。我試過儘可能地應用它:在結構中的多維動態數組,大小由int在同一個struct中定義的大小C
typedef struct level{
/*other stuff*/
int Size;
int Arr[0][0];
}level;
level InitLevel(int S){
struct level* N = malloc(sizeof(level)+S*S*sizeof(int));
N->Size=S;
int i,j;
for(i=0;i<S;i++){
for(j=0;j<S;j++){
N->Arr[i][j]=0;
}
}
return *N;
}
編譯得很好,所以就是這樣。問題是,在主一次,看起來大約是這樣的:
int main(){
level myLevel = InitLevel(10);
printf("%i \n",myLevel.Size);
printf("%i \n",myLevel.Arr[5][5]);
}
雖然myLevel.Size返回正確的值,原來數組的值不正確地設置爲0,而不是返回似乎是要麼胡言亂語或記憶地址。
我不確定我做錯了什麼,但我希望我離解決方案不遠?幫助將不勝感激。
'int arr [0] [0];'停在這裏。刪除這一行。 C中的數組不以這種方式工作。鏈接問題中的什麼讓你相信你可以做到這一點? –
'N = malloc(...);返回* N'; C中的動態分配也不會以這種方式工作。 –