C передает адреса и указатели на функции

В этом руководстве вы научитесь передавать адреса и указатели в качестве аргументов функциям с помощью примеров.

В программировании на 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.

Интересные статьи...