Передача указателей на функцию означает, что расположение переменных в памяти передается параметрам в функции, а затем выполняются операции. Определение функции принимает эти адреса с помощью указателей, адреса сохраняются с помощью указателей.
Передача аргументов без указателя
Когда мы передаем аргументы без указателей, изменения, сделанные функцией, будут внесены в локальные переменные функции.
Ниже приведена программа на C для передачи аргументов в функцию без указателя:
С
// C program to swap two values
// without passing pointer to
// swap function.
#include <stdio.h>
void
swap(
int
a,
int
b)
{
int
temp = a;
a = b;
b = temp;
}
// Driver code
int
main()
{
int
a = 10, b = 20;
swap(a, b);
printf
(
"Values after swap function are: %d, %d"
,
a, b);
return
0;
}
Выход
Values after swap function are: 10, 20
Аргументы Передача с указателями
В этом примере передается указатель на функцию. В качестве аргумента вместо переменной передается указатель и вместо ее значения передается ее адрес. В результате любое изменение, сделанное функцией с помощью указателя, постоянно сохраняется по адресу переданной переменной. В C это называется вызовом по ссылке.
Ниже приведена программа на C для передачи аргументов функции с помощью указателей:
С
// C program to swap two values
// without passing pointer to
// swap function.
#include <stdio.h>
void
swap(
int
* a,
int
* b)
{
int
temp;
temp = *a;
*a = *b;
*b = temp;
}
// Driver code
int
main()
{
int
a = 10, b = 20;
printf
(
"Values before swap function are: %d, %d\n"
,
a, b);
swap(&a, &b);
printf
(
"Values after swap function are: %d, %d"
,
a, b);
return
0;
}
Выход
Values before swap function are: 10, 20 Values after swap function are: 20, 10