1.配置設定一個指針數組,然後把每個指針初始化為動态配置設定的行
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZD9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVP9EVT4tGRSVUOFZldRhlW1VTaitmTzkVdjJjYzpkMMZ3bENGMShUYvwFd4VGdvwlMvw1ayFWbyVGdhd3PwQjN0MjMxQTMwETNwQTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
代碼如下:
2.讓數組的内容連續,但在後來重新配置設定行。
上述兩種方案都可以正常地使用數組下表array[i][j]來通路。
3.使用一個動态配置設定的一維數組來模拟二位數組,但是你必須手動計算數組下标。
但是必須手動計算下标,用array[i * COL + j]來通路第i行j列的元素。
所有這些技術都可以擴充到三維或更多元數組。這個是第一種技術的三維數組版本。
假設有下面二維數組的聲明:
函數的聲明如下:
其中f1a和f1b接收傳統二維數組,f2接收扁平二維數組
下面的調用可以如願運作:
那為什麼array1,array2和array3,array5不能被傳入。
f1a和f1b要求列數位COL,但是array1,array2和array3沒有指定列數,是以不符合。
f1a和f1b要求第一個參數是一個指向一維數組的指針,但是array5是一個指向二維數組的指針,是以不符合。
傳統的二維數組在記憶體結構上也是扁平的,而array1不是扁平的,是以隻有array1不符合。