我正在通過實施康威的生命遊戲來嘗試我的手。雙指針如何用於矩陣(二維數組)?
我想動態地建立兩個網格(int
矩陣),一個用於當前,另一個用於下一代,因此在確定下一代是什麼樣子之後,我只是交換指針。
起初,我試圖絕望地定義像int * grid
這樣的網格指針,你不能用第二組括號括起來,如[][]
,因爲 - 顯然 - 第一組括號返回一個int。
我也嘗試過類似int * grid[HEIGHT][WIDTH]
,但這給出了將此類指針分配給另一個指針的問題。 (事實上,我不知道這在內存中確實會發生什麼!)
在我天真的希望之中,我認爲以下方法可以在絆倒雙引擎之後起作用。該程序編譯,但在指示的線上運行時失敗。 (在Windows中,除了問題事件名稱是APPCRASH
之外,我沒有更多的細節。
免責聲明:這不是實際的程序,只是問題的概念證明。
#include <stdio.h>
#include <stdlib.h>
int HEIGHT = 20;
int WIDTH = 20;
int ** curr_gen; // Current generation
int ** next_gen; // Next generation
/* Entry Point main */
int main(int argc, char** argv) {
// Allocate memory for the grids
curr_gen = malloc(sizeof (int) * WIDTH * HEIGHT);
next_gen = malloc(sizeof (int) * WIDTH * HEIGHT);
curr_gen[0][0] = 0; //<< PROGRAM FAILS HERE
// Release heap resources
free(curr_gen);
free(next_gen);
return 0;
}
http://c-faq.com/ aryptr/dynmuldimary.html –
你不能有一個鏈接的答案。爲了處理你的情況,你需要了解內存中發生了什麼 – ThunderGr