Iが出力されます 値の呼び出しと参照作業による呼び出しの両方?
// 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;
}
参照
によって呼び出す働いていました?!
「有名なスワップ関数の例」?あなたは何を念頭に置いていますか? –
メソッドのシグネチャを変更しました: 'int Add(int * a、int * b)'。明らかに '&a'と'&b'で動作します! – xanatos
Cは参照渡しをサポートしていません。 **厳密には値渡しです。また、_methods_もサポートしていません。 – Olaf