看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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)
nana0130:喔~~我懂了,感謝c大 04/19 16:51