[問題] 陣列位址問題

看板C_and_CPP (C/C++)作者 (迷途羔羊)時間15年前 (2010/08/27 20:08), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題:張耀仁老師的C++程式設計第二版 第8-10頁計算A[k]位址 的方式可否請各位高手說明一下 小弟寫了下列程式去驗證 卻一直錯誤 程式如下 是我的程式哪裡錯了嗎? #include<iostream> using namespace std; int main() { const int m = 5; double a[m] = {1, 2, 3, 4, 5}; cout << "the adress of pv is : " << &a[0] + 2*sizeof(double)<<endl; cout << "the adress of pv is : " << &a[2] <<endl; return 0; } 希望得到的正確結果:兩個位址一樣 程式跑出來的錯誤結果:兩個不同的位址 開發平台: c++ (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.201.58

08/27 20:13, , 1F
(int)&a[0] 與 (int)&a[2] 就會相同了 原因可以想想看
08/27 20:13, 1F

08/27 20:14, , 2F
你也可以試試看印出 &a[0] + 2 來比比看
08/27 20:14, 2F

08/27 21:44, , 3F
畫方格來看(1格1byte), double 佔4bytes, 然後設定方
08/27 21:44, 3F

08/27 21:44, , 4F
個起始位址為&a[0], 把實際印出來的結果跟你想像的算
08/27 21:44, 4F

08/27 21:45, , 5F
法算出的指標一不一樣
08/27 21:45, 5F

08/27 21:47, , 6F
^比較
08/27 21:47, 6F

08/27 21:48, , 7F
先搞清楚你的算式對應到幾何圖形是怎樣的行為
08/27 21:48, 7F
文章代碼(AID): #1CTwgZAO (C_and_CPP)
文章代碼(AID): #1CTwgZAO (C_and_CPP)