C C 指標和陣列的異同

2021-04-29 11:17:07 字數 375 閱讀 9664

這個是c/c++中最容易混淆,最容易頭暈的乙個話題。

我們先從乙個簡單的例子看起(一維陣列)

void f(char* buf);    |         void f(char* buf);

int main(...)

void f3(int *ppi[2]){}

int p2[3][2]=,, };

f2(p2);正確的用法

f3(p2);警告:傳遞引數 1 (屬於 『f3』)時在不相容的指標型別間轉換。

由於f3的生成**是2次跳轉,因此傳入p2作為引數的時候,會把乙個真正的陣列元素的值作為位址看待,再次計算乙個記憶體位址偏移量中的值,可能導致程式崩潰。

參考文獻:《c專家程式設計》

C C 指標陣列和陣列指標

這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an ar...

C C 指標和陣列的關係

首先乙個列子說明指標和陣列真的不是一回事 c中的指標和陣列 一 如果用硬是把陣列和指標放在乙個,乙個放宣告裡乙個放定義中,這裡就能看到指標和陣列名是不同的。這篇文章從符號表的角度分析一下指標和陣列名的不同點,兩種東西在資料訪問的時候的不同點。有關不同點,再來點更深層次的東西 c中的指標和陣列 二 接...

在C C 中,指標和陣列的區別

在c c 中,指標和陣列在很多地方可以互換使用,這使得我們產生一種錯覺,感覺陣列和指標兩者是完全等價的,事實上陣列和指標是有很大的區別的。1.兩者在含義上的區別。陣列對應著一塊記憶體區域,而指標是指向一塊記憶體區域。其位址和容量在生命期裡不會改變,只有陣列的內容可以改變 而指標卻不同,它指向的記憶體...