Вызов по ссылке
Для вызова функции по ссылке, а не ближнего переменной, передавать адрес переменной. Адрес переменной можно принять и с помощью оператора. Следующий призыв подкачки функцию, передавая адрес переменных вместо фактических значений.
swap(&x, &y);
Dereferencing
Проблема, которая сейчас состоит в том, что функция подкачки были приняты решения, а не переменной поэтому нам нужно dereference, с которыми мы имеем дело с фактическими значениями вместо адреса от переменных для их подкачки.
Dereferencing достигается в С с помощью указателя (*) нотации. Проще говоря, это означает уделение * перед каждой переменной перед ее использованием, с тем, что он ссылается на значение переменной вместо ее адреса. Следующая программа иллюстрирует ближнего - по ссылке в своп два значения.
#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 |
Функции могут быть рекурсивными, которое функция может называть себя. Каждое слово требует себе, что нынешнее состояние является функцией оттесняются на стеке. Очень важно помнить этот факт можно легко создать переполнение стека, т.е. стек исчерпан в помещение для хранения любой дополнительной информации.
Следующий пример вычисляет Факториал числа от использования рекурсии. - Это факториал числа, умноженные на целое число раз в других ниже себя, вплоть до 1. Например, факториал числа 6 :
Factorial 6 = 6 * 5 * 4 * 3 * 2 * 1
Поэтому факториал 6, 720. Как видно из приведенного примера, что факториал 6 = 6 * 5 факториал. Кроме того, факториал 5 = 5 * 4 факториал, и так далее.
Ниже приводятся общие правила исчисления факториал числа.
factorial(n) = n * factorial(n-1)
Выше правилу прекращается при 100 мм, как факториал 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 |
|