推 nana0130:喔~~我懂了,感謝c大 04/19 16:51
※ 引述《nana0130 (小那)》之銘言:
: 遇到的問題: (題意請描述清楚)
: #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[2],已經將 ptr 指向 array[2][0] 這個位置
然後現在的 ptr[2] 相當於要拿 array[2][2]的值,所以印出為 0
: ptr =array[0]+1;
: cout<<*ptr<<endl;
: ptr+=1;
: cout<<*(ptr++)<<endl;
: cout<<ptr[2]<<endl;//why is 6?
因為前面的 ptr=array[0]+1,已經將 ptr 指向 array[0][1] 這個位置
然後經過 ptr+=1 和 *(ptr++) 後,ptr 現在指向 array[1][0] 這個位置
最後的 cout<<ptr[2] 相當於要拿 array[1][2]的值,所以印出為 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: 60.248.4.114
※ 編輯: cutecpu 來自: 60.248.4.114 (04/19 16:26)