天天看點

《你必須知道的495個C語言問題》筆記--數組和指針

1.配置設定一個指針數組,然後把每個指針初始化為動态配置設定的行

《你必須知道的495個C語言問題》筆記--數組和指針

代碼如下:

2.讓數組的内容連續,但在後來重新配置設定行。

《你必須知道的495個C語言問題》筆記--數組和指針

上述兩種方案都可以正常地使用數組下表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不符合。