C ++ 指標 | 指標與二維陣列_5
阿新 • • 發佈:2018-12-11
指標與二維陣列
根據上面的圖,我現在寫一些語句,我們一起來判斷輸出值是多少!!
int (*p)[3] = B;
print B;
這個會列印多少?
思考一下。。。。。。。
。。。
。。。
。。。
列印:
400
print *B;
這個會列印多少?
思考一下。。。。。。。
。。。
。。。
。。。
列印:
400
print B[0];
這個會列印多少?
思考一下。。。。。。。
。。。
。。。
。。。
列印:
400
print B[0][0];
這個會列印多少?
思考一下。。。。。。。
。。。
。。。
。。。
列印:
400
print(B+1);
這個會等於多少?
思考一下。。。。。。。
。。。
。。。
。。。
列印:
412
print(*(B+1))
這個會等於多少?
思考一下。。。。。。。
。。。
。。。
。。。
列印:
412
okay,以上是二維陣列與一維不一樣的輸出。我們總結為以下:
B[ i ][ j ] = *( B[ i ] + j ) = *( *( B + i ) + j )
解釋:
*( B[ i ] + j ) :
我們知道 B[ i ] 是一個地址,指定第幾行的頭地址。+j,也就是第幾行的具體的某個地址。
因為 B[ i ] 和 *( B + i ) 是相等的,都是返回陣列的第幾行的頭地址,所以也就等於 *( *( B + i ) + j ) 。
B[ i ][ j ] 其實就是一個轉換 *( *( B + i ) + j ) 的語法。
另外,下面這句是什麼意思 呢?
int (*p)[3] = B;
( *p ) 就是指向陣列第一個元素的指標。
對程式碼不滿足,是任何真正有天才的程式設計師的根本特徵。