更改函数中的数组值

时间:2013-06-29 03:23:02

标签: c arrays printing flip

好的,我有一个需要翻转和打印的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这样的“硬”值,那么它会打印出一个10x10阵列,其中一半是10s。我在这里不知道为什么简单的交换不起作用:(

1 个答案:

答案 0 :(得分:2)

据我所知,“翻转”你的意思是“转置”......

另外,如果你手工编写代码,你的代码可以工作,但是两次 - 也就是说,你得到原始矩阵。您可以尝试将内部for循环更改为从x开始,而不是从零开始。