わかりましたので、反転して印刷する必要がある 10x10 の配列があります。私はまさにそれを行うためにこの関数を作りました
void flip(int d[][10], int rows)
{
int temp, x, y, cols;
cols=rows;
for(x=0; x<rows; x++)
{
for(y=0; y<cols; y++)
{
temp=d[x][y];
d[x][y]=d[y][x];
d[y][x]=temp
}
}
}
これで、配列が参照によって渡されることがわかりましたが、配列自体がポインターとして機能することをどこかで読んだので、正しいと思われるポインター表記を使用する必要はありません。私の問題は、反転後に印刷しようとすると、反転された配列が印刷されず、元の配列が反転していないと思われる元の配列が印刷されることです。
印刷機能はこちら。
void printArray(int d[][10])
{
int rows, cols,x,y;
rows = sizeof(d[0])/sizeof(d[0][0]);
cols = rows;
for(x=0;x<rows; x++)
{
for(y=0;y<cols;y++)
printf("%2d ",d[x][y]);
printf("\n");
}
}
奇妙なことに、temp を 10 のような「ハード」な値に変更すると、半分が 10 の 10x10 配列が出力されます。ここで、単純なスワッピングが機能しない理由がわかりません:(