В этом руководстве вы научитесь передавать адреса и указатели в качестве аргументов функциям с помощью примеров.
В программировании на C также можно передавать адреса в качестве аргументов функциям.
Чтобы принять эти адреса в определение функции, мы можем использовать указатели. Это потому, что указатели используются для хранения адресов. Возьмем пример:
Пример: передача адресов функциям
#include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )
Когда вы запустите программу, вывод будет:
число1 = 10 число2 = 5
Адрес num1 и num2 передается swap()
функции с использованием swap(&num1, &num2);
.
Указатели n1 и n2 принимают эти аргументы в определении функции.
void swap(int* n1, int* n2) (… )
Когда * n1 и * n2 изменяются внутри swap()
функции, num1 и num2 внутри функции main () также изменяются.
Внутри swap()
функции *n1
и *n2
поменялись местами. Следовательно, num1 и num2 также меняются местами.
Обратите внимание, что swap()
ничего не возвращается; его возвращаемый тип - void
.
Пример 2: Передача указателей в функции
#include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )
Здесь значение, хранящееся в p *p
, изначально равно 10.
Затем мы передали указатель p addOne()
функции. Указатель ptr получает этот адрес в addOne()
функции.
Внутри функции мы увеличили значение, хранящееся в ptr, на 1, используя (*ptr)++;
. Поскольку указатели ptr и p имеют один и тот же адрес, *p
внутри main()
также 11.