为什么答案不是a=5,b=2 是交换了两次吗 求详细解析

#include <stdio.h>
void exchange(int number_a, int number_b);
int main(void)
{
int a = 2, b = 5;
exchange(a, b);
printf("a = %d, b = %d", a, b);
return 0;
}
void exchange(int number_a, int number_b)
{
int temp;
temp = number_a;
number_a = number_b;
number_b = temp;
}

exchange(int number_a, int number_b)函数形参是值传递,number_a number_b 的作用域就在函数体内,
待函数执行完毕退出,number_a number_b 空间也被释放,函数里交换的是 number_a number_b 的值,
主函数中 a b 的值并未被改变。修改如下,供参考:

#include <stdio.h>
void exchange(int *number_a, int *number_b);//修改
int main(void)
{
    int a = 2, b = 5;
    exchange(&a, &b);    //修改
    printf("a = %d, b = %d", a, b);
   
    return 0;
}
void exchange(int *number_a, int *number_b) //修改
{
    int temp;
    temp = *number_a;                       //修改
    *number_a = *number_b;                  //修改
    *number_b = temp;                       //修改
}