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; )

Коли ви запускаєте програму, результат буде:

 num1 = 10 num2 = 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.

Цікаві статті...