[問題] 一個關於陣列和指標的問題
問題:
程式如下,我的問題是:用array去寫成 *(*(array+i)+j) 就沒問題
這表示說c語言的陣列是有記住他是3x3的陣列
不然他怎麼知道第一層的array+i他要跳 3*sizeof(int) 呢?
這樣是不是表示array除了用了 [3][3]的記憶體外,還有用到其它的?
有哪位高手可解解疑問嗎
謝謝
程式:
void pointer_test2()
{
int array[3][3]=
{{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int **ptr;
int i, j;
ptr = array;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf("array[%d][%d]=%d\n", i, j, *(ptr+(i*3+j)));
//下面這一行是不行的,因為ptr不是陣列,所以程式不知道一列有幾個元素
//printf("array[%d][%d]=%d\n", i, j, *(*(ptr+i)+j));
}
int main()
{
pointer_test2();
return 0;
}
遇到的問題: (題意請描述清楚)
希望得到的正確結果:
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
有問題的code: (請善用置底文標色功能)
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.16.142
→
03/25 22:43, , 1F
03/25 22:43, 1F
→
03/25 22:45, , 2F
03/25 22:45, 2F
推
03/25 23:04, , 3F
03/25 23:04, 3F
→
03/25 23:04, , 4F
03/25 23:04, 4F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):