为什么我在运行时遇到此错误?

Uts*_*jee 0 c

我在观看教程的同时编写了这个程序来比较C中"按值调用"和"按引用调用"之间的区别.但是我收到错误:

运行命令:第1行:1508分段错误:11 ./"$ 2""$ {@:3}"

救命?

main() 
{
int a,b;
scanf("%d %d", &a, &b);
printf("Before Call %d %d", a,b);
exch_1(a,b);
printf("After first call %d %d", a,b);
exch_2(a,b);
printf("After second Call %d %d \n", a,b);  

}

exch_1(i,j)
int i, j;
{
    int temp;
    temp = i;
    i = j;
    j = temp;
}

exch_2(i,j)
int *i, *j;
{
    int temp;
    temp = *i;
    *i = *j;
    *j = temp;
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*kPl 5

由于exch_2期望地址作为参数,您必须调用它exch_2(&a,&b);.

您传递的值,这些值被视为地址.如果例如a具有值5,则计算机将尝试使用5计算机上的地址值- 这可能是您的程序无法访问的.