[問題] 一些array、pointer大小的觀念..

看板C_and_CPP作者 (滾阿滾阿~)時間13年前 (2010/09/15 23:23), 編輯推噓6(6012)
留言18則, 9人參與, 最新討論串1/1
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) c++ 有問題的code: (請善用置底文標色功能) 我打一些簡單的code說明我想詢問的觀念 int a[5]={1,2,3,4,5}; int* b=a; sizeof(a); // 4*5=20 bytes sizeof(b); // 4 bytes 請問該如何解釋a、b大小不同的情況呢? a也是一個 pointer不是嗎? 我以為a跟b是等價的兩個變數 b的大小很合理 那a因為是個陣列 所以分配了比較多的記憶體用來儲存這個int pointer嗎? 我應該有某個基礎觀念沒弄清楚... 可以請大大解惑嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.147.254

09/15 23:30, , 1F
array != pointer, 這可以考慮寫成第十五誡...XDD
09/15 23:30, 1F

09/15 23:34, , 2F
sizeof 看的是靜態型別。不管怎樣,就跟你宣告一致。
09/15 23:34, 2F

09/15 23:34, , 3F
sizeof(b) 就是 sizeof(int *),這不會改變。
09/15 23:34, 3F

09/16 02:05, , 4F
陣列不是指標...但是坊間有些書會說陣列和指標一樣 真是
09/16 02:05, 4F

09/16 02:05, , 5F
誤人子弟啊...
09/16 02:05, 5F

09/16 02:06, , 6F
其實我剛學也覺得分不清楚 後來才慢慢懂了 XD
09/16 02:06, 6F

09/16 02:10, , 7F
真的有書會寫兩個一樣嗎@@?
09/16 02:10, 7F

09/16 02:48, , 8F
大部分書籍敘述正確,只是沒有很清楚的幫初學者分辨
09/16 02:48, 8F

09/16 02:50, , 9F
主因或許是書籍著重在寫出正確的程式碼,而事實上
09/16 02:50, 9F

09/16 02:51, , 10F
array名稱的"使用"確實跟const pointer相當
09/16 02:51, 10F

09/16 02:51, , 11F
書籍著重在"使用",就不會特地分析他們的差異
09/16 02:51, 11F

09/16 09:30, , 12F
我都在12誡裡面寫著"陣列!=指標"了 QQ
09/16 09:30, 12F

09/16 12:15, , 13F
陣列使用上怎會跟 const ptr 一樣? = = &array 就不
09/16 12:15, 13F

09/16 12:15, , 14F
一樣了
09/16 12:15, 14F

09/16 15:28, , 15F
除了 &array==array 以外一樣 XD
09/16 15:28, 15F

09/17 01:16, , 16F
&array 跟 array 其實也不一樣 型態不一樣~
09/17 01:16, 16F

09/17 01:17, , 17F
只是這邊位址剛好一樣~ array 陣名名稱指向陣列第一個元素
09/17 01:17, 17F

09/17 01:18, , 18F
位址..
09/17 01:18, 18F
文章代碼(AID): #1CaEJSat (C_and_CPP)