#include <stdio.h>
#include <stdlib.h>
int N;
void function(int array[][],int k){
int i,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
array[k][l]=k;
k++;
}
}
}
int main(){
scanf("%d",&N);
int square[N][N]={0};
function(&square,1);
int k,l;
for(k=0;k<N;k++){
for(l=0;l<N;l++){
printf("%2d ",square[k][l]);
}
printf("\n");
}
}
在 C 語言中,二維陣列是透過一維陣列模擬而成,因此在傳遞至副程式中時,需要特別處理。可以使用指標的方式將二維陣列的地址傳遞至副程式中。以下是修改後的範例程式:
#include <stdio.h>
#include <stdlib.h>
void function(int (*array)[], int N, int k){
int i,j;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
array[k][j]=k;
k++;
}
}
}
int main(){
int N;
scanf("%d",&N);
int square[N][N]={0};
function(square, N, 1);
int k,l;
for(k=0;k<N;k++){
for(l=0;l<N;l++){
printf("%2d ",square[k][l]);
}
printf("\n");
}
return 0;
}
請注意到,我們在副程式 function 中,透過 (int (*array)[]) 這樣的宣告方式,告訴編譯器,這是一個指標,指向一個二維陣列。
在 main 函式中,我們需要將 N 和 square 陣列的地址傳遞至 function 函式中。因此,我們將 square 陣列直接傳入函式,並且在 function 函式中,用 N 來代表陣列的大小。