[問題] 問一個指標問題

看板C_and_CPP (C/C++)作者 (小那)時間16年前 (2010/04/19 15:27), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) #include <stdio.h> #include <iostream> using namespace std; int main() { int array[3][3]={{1,2},{4,5,6},{7}}; int *ptr; ptr =array[2]; cout<<*(ptr+1)<<endl; cout<<*(array[0]+3)<<endl; cout<<ptr[2]<<endl;//why is 0? ptr =array[0]+1; cout<<*ptr<<endl; ptr+=1; cout<<*(ptr++)<<endl; cout<<ptr[2]<<endl;//why is 6? system("pause"); return 0; } 希望得到的正確結果: 0 4 0 2 0 6 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++, Windows 有問題的code: (請善用置底文標色功能) 補充說明: 為什麼 ptr[2] 第一個是 0 第二次印出來是6 ptr[n]這代表什麼意思? 一為陣列我懂,就是array[n]的意思 但是二維呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.39.115

04/19 15:30, , 1F
ptr+=1; 把指標指的位置往下移一個.....
04/19 15:30, 1F

04/19 15:47, , 2F
嗯,我知道往下移,還是不懂ptr[2]是怎麼來的?
04/19 15:47, 2F

04/19 17:09, , 3F
int array[3][3]={{1,2,3},{4,5,6},{7,8,9}};
04/19 17:09, 3F

04/19 17:10, , 4F
你把陣列改成這一行,看他跑出來的字就懂了
04/19 17:10, 4F

04/19 17:10, , 5F
ptr =array[2]; 是指到 ptr =array[2][0];
04/19 17:10, 5F

04/19 17:12, , 6F
=口=||| 太久沒用c++,忘了好多
04/19 17:12, 6F

04/19 17:16, , 7F
囧 下面有人回答了
04/19 17:16, 7F
文章代碼(AID): #1Bp0NsxD (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Bp0NsxD (C_and_CPP)