# define X (3)
# define Y (5)
int main() {
int
d[X][Y]={1,2,3,4,5,6,7,8}; /*我想列印d[][]的內容*/
}
那麼,我們一般會這樣寫:
# define X (3)
# define Y (5)
int main() {
int
d[X][Y]={1,2,3,4,5,6,7,8}; /*我想列印d[][]的內容*/
/*這是在main()中的實現方案*/
int i,j;
for (i=0; i<=X-1; i++) {
for (j=0; j<=Y-1; j++) {
printf("%d, ",d[i][j]);
}
printf("\n");
}
return 0;
}
由於我們很可能經常會需要列印一個二維數組這樣的東西,所以呢,我們會想寫一個函數來專門幹這件事兒:
# define X (3)
# define Y (5)
/*為了隨時都能列印d[][],我打算寫下面這個函數來幹這件事*/
/*注意這個函數參數的寫法。能改成int d[][]或int d[X][]或int d[X][Y]嗎?
想想看,為什麼能或者不能?*/
void show(int d[][5]) {
int i,j;
for (i=0; i<=X-1; i++) {
for (j=0; j<=Y-1; j++) {
printf("%d, ",d[i][j]);
}
printf("\n");
}
return;
}
int main() {
int
d[X][Y]={1,2,3,4,5,6,7,8};
/*我想列印d[][]的內容*/
/*這是利用函數的實現方案*/
show(d);
return 0;
}
再來看另一種形式的描寫:
# define X (3)
# define Y (5)
/*進一步推導,你知道的,專業的程式員嘛,總喜歡在函數參數中寫指標形式的參數,
而不是int d[][Y]這種樣子。
所以,我們就有了下面這部分代碼。*/
void show(int * d) { /*看!這裡是指標形式的參數*/
int i,j;
for (i=0; i<=X-1; i++) {
for (j=0; j<=Y-1; j++) {
printf("%d, ",d[i*Y+j]);/*看!這句話是不是深刻地反映了指標和數組元素之間的關係?*/
}
printf("\n");
}
return;
}
int main() {
int
d[X][Y]={1,2,3,4,5,6,7,8};
/*我想列印d[][]的內容*/
/*這是在main()中的實現方案*/
show(d);
return 0;
}
到此為止,我不講了,讀者可以自己領會上述代碼的意義。
本文所有代碼可以在這裡下載。