C语言函数中的值传递与引用传递

62 阅读1分钟
#include <stdio.h>

int temp;
int main(int argc, char const *argv[])
{
    
    int x = 3, y = 5;
    // x = 3, y = 5
    swapByValue(x, y); // 值传递不会改变主调函数的实参值,这里的x, y只是复制的值
    printf("x = %d, y = %d\n", x, y);
    // x = 5, y = 3
    swapByRefercence(&x, &y); // 引用传递传入的实参的内存地址,可以在函数中交换实参的值
    printf("x = %d, y = %d\n", x, y);
    
    return 0;
}

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

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