深度解析陣列名與指標的區別

2021-08-14 08:40:20 字數 615 閱讀 4327

最近經常遇到sizeof 運算子在計算陣列大小出錯的問題,究其原因還是學藝不精,廢話不多說,上**。

首先看下面這段**:

#include

using

namespace

std;

void fun1(int *p)

void foo(int i)

但是,常量變成變數,只是值的傳遞,其內涵和位址還是丟失了,於是fun2(a);這個結果是正常的。

在深度解析一點sizeof就是,sizeof 只對具體物件的例項化後有效,例如:

struct test

;int main()

r 引用的是整個的 test 物件而不是指向 test 的指標,所以 sizeof r 的結果和 sizeof test 完全相同。

雖然是個小問題,但是大家的共識與老師教的卻常常是反過來的。

最後,在下再次表達深深的希望,願我和我的同道中人能夠真正以謹慎的研究態度來認真思考開發中的問題,這樣才能在我們中間產生大師級的程式設計師,頂級的開發書籍。

陣列名與指標區別

1 陣列名的內涵在於其指代實體是一種資料結構,這種資料結構就是陣列 2 陣列名的外延在於其可以轉換為指向其指代實體的指標,而且是乙個指標常量 3 指向陣列的指標則是另外一種變數型別 在win32平台下,長度為4 僅僅意味著陣列的存放位址!1 陣列名指代一種資料結構 陣列 現在可以解釋為什麼第1個程式...

陣列名與指標區別

魔幻陣列名 include int main int argc,char argv 1 陣列名不是指標 我們先來推翻 陣列名就是指標 的說法,用反證法。證明 陣列名不是指標 假設 陣列名是指標 則 pstr和str都是指標 因為 在win32平台下,指標長度為4 所以 第6行和第7行的輸出都應該為4...

陣列名與指標區別

魔幻陣列名 include int main int argc,char argv 1 陣列名不是指標 我們先來推翻 陣列名就是指標 的說法,用反證法。證明 陣列名不是指標 假設 陣列名是指標 則 pstr和str都是指標 因為 在win32平台下,指標長度為4 所以 第6行和第7行的輸出都應該為4...