我认为,通过值调用函数不会有任何效果,我应该始终参考使用电话,但尝试这种代码...既通过价值调用,又通过参考调用工作?
// call by value
#include<stdio.h>
int Add(int a, int b)
{
int c = a + b ;
return c ;
}
int main()
{
int x = 2 , y = 4 ;
int z = Add(x,y);
printf("%d\n",z);
}
输出将是:6
它工作正常在这两个方式(按价值计算&呼叫通过引用调用),
// call by reference
#include<stdio.h>
int Add(int* a, int* b)
{
int c = *a + *b ;
return c ;
}
int main()
{
int x = 2 , y = 4 ;
int z = Add(&x,&y);
printf("%d\n",z);
}
output will be: 6
没有像著名的交换功能的例子 - 通过调用值时,它不换 -
// call by value
#include <stdio.h>
void swap(int a, int b)
{
int temp;
temp = b;
b = a;
a = temp;
}
int main()
{
int x = 1 , y = 2;
printf("x = %d , y = %d\n", x,y);
swap(x, y);
printf("after swapping\n");
printf("x = %d , y = %d\n", x,y);
return 0;
}
..它只是工作参考
// call by reference
#include <stdio.h>
void swap(int *a, int *b)
{
int temp;
temp = *b;
*b = *a;
*a = temp;
}
int main()
{
int x = 1 , y = 2;
printf("x = %d , y = %d\n", x,y);
swap(&x, &y);
printf("after swapping\n");
printf("x = %d , y = %d\n", x,y);
return 0;
}
那么如何判断是否“按值调用”去上班还是不打电话?!
“着名的swap函数示例”?你有什么考虑? –
您已更改方法的签名:“int Add(int * a,int * b)'。很明显,它现在可以和'&a'和'&b'一起使用! – xanatos
C不支持通过引用。这是**严格**按价值传递。它也不支持_methods_。 – Olaf