【问题标题】:Changing array values in functions更改函数中的数组值
【发布时间】:2013-06-26 21:57:19
【问题描述】:

好的,所以我有一个需要翻转和打印的 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。我不知道为什么简单的交换不起作用:(

【问题讨论】:

    标签: c arrays printing flip


    【解决方案1】:

    据我所知,“翻转”是指“转置”...

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

    【讨论】:

    • 是的,我的意思是转置,我会试一试是的,它成功了,谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2014-03-15
    相关资源
    最近更新 更多