呼によ参照
変数自体を渡すかわりに機能呼によ参照を、することは、変数の住所を渡す。 変数の住所は使用及びオペレータによって取ることができる。 次の呼出し実際の価値の代りに変数の住所を渡す交換機能。
swap(&x, &y);
参照解除
私達が今持っている問題はそれらを交換するために私達が実際の価値よりもむしろ変数の住所を見ているように機能交換が住所よりもむしろ変数に渡された、従って私達は変数を参照解除する必要があることである。
参照解除はcでポインター(*)表示法の使用によって達成される。 簡単な言葉では、これは*それを使用して前に置くことを可変的なそれぞれの前に…変数の価値よりもむしろ住所を示すためにaを意味する。 次のプログラムは2つの価値を交換するために渡によ参照を説明する
#include <stdio.h>
void swap(int *x, int *y);
int main()
{
int x=6, y=10;
printf("Before the function swap, x = %d and y =
%d\n\n", x, y);
swap(&x, &y);
printf("After the function swap, x = %d and y =
%d\n\n", x, y);
return 0;
}
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
私達をプログラムの出力を見ることを許可しなさい:
Before the function swap, x = 6 and y = 10
After the function swap, x = 10 and y = 6 |
機能は回帰的かもしれない機能それ自身を呼ぶかもしれないである。 それ自身への各呼出しは機能の現状が積み重ねに押されるように要求する。 スタックオーバーフローを作成することは容易であるのでこの事実を覚えていることは重要であるすなわち積み重ねはもうデータを置くためにスペースを使い果たした。
次の例は回帰を使用して数のFactorial計算する。 factorial 1にそれ自身の下でその他すべての整数、増加する数である。 例えば、第6のfactorial次のとおりである:
Factorial 6 = 6 * 5 * 4 * 3 * 2 * 1
従って6のfactorial 720である。 それは上記の例からそのfactorial 6 = 6 * factorial 5見ることができる。 同様に、factorial 5 = 5 * factorial 4、およびそう。
次はfactorial数を計算するための一般ルールである。
factorial(n) = n * factorial(n-1)
上記の規則はnが= 1のfactorialとして1、1であると終わる。 私達をよりよく例の助けによってそれを理解することを試みることを許可しなさい:
#include <stdio.h>
long int factorial(int num);
int main()
{
int num;
long int f;
printf("Enter a number: ");
scanf("%d", &num);
f = factorial(num);
printf("factorial of %d is %ld\n", num, f);
return 0;
}
long int factorial(int num)
{
if (num == 1)
return 1;
else
return num * factorial(num-1);
}
私達をこのプログラムの実行の出力を見ることを許可しなさい:
Enter a number: 7
factorial of 7 is 5040 |
|