輸出結果為60。簡單說p和a是一個東西。也就是說把p換成a結果也是一樣的。具體解釋一下:二維陣列的結構是這樣的:a[3]這個第二維陣列記錄的是第一維陣列的開始地址。即,a[0]的值和(&a[0][0])的值是一樣的。a[1]的值和(&a[1][0])的值是一樣的等等。因為a值賦給了p的原因,地址又是按順序儲存的,所以p+i的值也就是各第一維陣列的開始地址值。即a[i]和*(p+i)是一樣的。因此*(p+i)+j就是a[i][j]的地址。因此*(*(p+i)+j)就是a[i][j]的值。也就是說,這個程式求的是各行前兩列的數之和。 1 3 5 7 9 11 13 1517 19 21 231+3+9+11+17+19=60由於本人嘴笨,給你簡單畫一下儲存結構,幫助你理解。括號裡是程式中與p相關的值。 地址值 內容 0000 (p+0) 1000 (*(p+0)) 0001 (p+1) 2000 (*(p+1)) 0002 (p+2) 3000 (*(p+2)) 1000 (*(p+0)+0) 1 (*(*(p+0)+0)) 1001 (*(p+0)+1) 3 (*(*(p+0)+1)) 1002 (*(p+0)+2) 5 (*(*(p+0)+2)) 1003 (*(p+0)+3) 7 (*(*(p+0)+3)) 2000 9 ... ...
輸出結果為60。簡單說p和a是一個東西。也就是說把p換成a結果也是一樣的。具體解釋一下:二維陣列的結構是這樣的:a[3]這個第二維陣列記錄的是第一維陣列的開始地址。即,a[0]的值和(&a[0][0])的值是一樣的。a[1]的值和(&a[1][0])的值是一樣的等等。因為a值賦給了p的原因,地址又是按順序儲存的,所以p+i的值也就是各第一維陣列的開始地址值。即a[i]和*(p+i)是一樣的。因此*(p+i)+j就是a[i][j]的地址。因此*(*(p+i)+j)就是a[i][j]的值。也就是說,這個程式求的是各行前兩列的數之和。 1 3 5 7 9 11 13 1517 19 21 231+3+9+11+17+19=60由於本人嘴笨,給你簡單畫一下儲存結構,幫助你理解。括號裡是程式中與p相關的值。 地址值 內容 0000 (p+0) 1000 (*(p+0)) 0001 (p+1) 2000 (*(p+1)) 0002 (p+2) 3000 (*(p+2)) 1000 (*(p+0)+0) 1 (*(*(p+0)+0)) 1001 (*(p+0)+1) 3 (*(*(p+0)+1)) 1002 (*(p+0)+2) 5 (*(*(p+0)+2)) 1003 (*(p+0)+3) 7 (*(*(p+0)+3)) 2000 9 ... ...