看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) #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
F23ko:ptr+=1; 把指標指的位置往下移一個..... 04/19 15:30
nana0130:嗯,我知道往下移,還是不懂ptr[2]是怎麼來的? 04/19 15:47
F23ko: int array[3][3]={{1,2,3},{4,5,6},{7,8,9}}; 04/19 17:09
F23ko:你把陣列改成這一行,看他跑出來的字就懂了 04/19 17:10
F23ko:ptr =array[2]; 是指到 ptr =array[2][0]; 04/19 17:10
F23ko:=口=||| 太久沒用c++,忘了好多 04/19 17:12
F23ko:囧 下面有人回答了 04/19 17:16