C語言中數組的升維與降維

前言

據瞭解,C語言的升維與降維好像是一個經常被提及的問題,彷彿通過測試面試者對這兩種操作的理解就可以判斷面試者對指針的基本認識。自認爲對指針的理解應該已經到位了。那麼我們下面就來看看到底什麼是數組的降維與升維。


二維數組

升維與降維只存在於高於一維的數組中,我們就以最簡單最常用的二維數組作爲演示對象來說明什麼是數組的降維與升維。下面是我一直以來對二維數組的理解。

float array[3][4]

我們獲得了一個二維數組,array是二維數組名,它是指向一個含有四個元素的一維數組的數組指針;array + 1的值是在array當前值的基礎上增加了4*sizeof(float);array+1==array[1],它們都是指向第二個一維數組的。*array是指向整個數組的第一個元素的指針,**array是第一個元素的值,&a[0]是指向第一個數組的數組指針。以上便是我對二維數的理解。
下面是升維

int (*a)[3];
int b[3][3];
a = &b[0];

下面是降維

int *a;
int b[3][3];
a = *(b);

注意點:仔細觀察這裏的解引用符*和取地址符&的用法與普通的用法在含義上的區別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章