【问题标题】:why the function swap function does not work? [duplicate]为什么功能交换功能不起作用? [复制]
【发布时间】:2018-11-05 10:40:15
【问题描述】:

我有一个函数swap(),如下所示

void swap(int x, int y)
{
    int temp;
    temp = x;
    x = y;
    y = temp;
}

当我像这样将它调用到我的主函数时

void main(int argc, char const *argv[])
{
    int x,y;
    printf("enter two integer: ");
    scanf("%d %d",&x,&y);
    printf("\nbefore swapping: %d , %d\n",x,y);
    swap(x,y);
    printf("\nafter swapping: %d, %d\n",x,y);
}

函数 swap() 不起作用(意味着不能交换两个值)。 为什么会这样? 谁能帮我解决这个问题?

【问题讨论】:

    标签: c function


    【解决方案1】:

    您的 void swap(int x, int y) 复制了参数,它不使用对它们的“引用”,这与 Java 等语言相反(甚至不确定在 Java 中整数不是按值传递的)。

    用途:

    void swap(int* x, int* y)
    {
        int temp;
        temp = *x;
        *x = *y;
        *y = temp;
    }
    

    【讨论】:

    • C 中没有引用调用。
    • @Swordfish 参考值
    • @NiVeR 哈哈,谢谢你让我傻笑。
    • 哈哈 xD。对于第一次遇到它的人来说,这可能(并且可能是)非常棘手。
    • 从来没有说过C中有引用。
    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多