这是您的问题的正确代码。使用 gcc -Wall 编译您的原始代码。它会给你上面的代码很多警告,最好你需要修复所有这些。如果您不了解 linux 和 gcc,请学习一下。不要使用 turboC 编译器等旧工具
void exch_1(int i, int j); // declare function prototype for exch_1 --> call by value
void exch_2(int* i, int* j); // declare function prototype for exch_1 --> call by reference
int main()
{
int a,b;
scanf("%d %d", &a, &b);
printf("Before Call %d %d\n", a,b);
exch_1(a,b); // call by value. changes done in exch_1 are not reflected here
printf("After first call %d %d\n", a,b);
exch_2(&a, &b); // --> please see the change here for call by reference, you
//should pass address as the parameters
// changes done in exch_2 can be seen here since we pass address
// In you original program you are passing value of a and b as the
// address.When you try to access those values in exch_2 the it leads
// to undefined behavior and so you can get segfault as well.
printf("After second Call %d %d \n", a,b);
return 0;
}
void exch_1(int i,int j)
//int i, j; // you do not need these variables
{
int temp;
temp = i;
i = j;
j = temp;
}
void exch_2(int* i,int* j)
//int *i, *j; // this line not needed
{
int temp;
temp = *i;
*i = *j;
*j = temp;
}