作者nana0130 (小那)
看板C_and_CPP
標題[問題] 問一個指標問題
時間Mon Apr 19 15:27:48 2010
遇到的問題: (題意請描述清楚)
#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