Ц Пренесите адресе и показиваче функцијама

У овом упутству научићете да прослеђујете адресе и показиваче као аргументе функцијама уз помоћ примера.

У програмирању на Ц, такође је могуће функције проследити као аргументе.

Да бисмо прихватили ове адресе у дефиницији функције, можемо користити показиваче. То је зато што се показивачи користе за чување адреса. Узмимо пример:

Пример: Прослеђивање адреса функцијама

 #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

Адреса нум1 и нум2 се прослеђују swap()функцији помоћу swap(&num1, &num2);.

Показивачи н1 и н2 прихватају ове аргументе у дефиницији функције.

 void swap(int* n1, int* n2) (… ) 

Када се * н1 и * н2 промене унутар swap()функције, нум1 и нум2 унутар главне () функције се такође мењају.

Унутар swap()функције *n1и *n2замењен. Стога се нум1 и нум2 такође замењују.

Приметите да 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почетку 10.

Затим смо проследили показивач п addOne()функцији. Показивач птр добија ову адресу у addOne()функцији.

Унутар функције повећали смо вредност сачувану у птр за 1 помоћу (*ptr)++;. С обзиром да оба показивача птр и п имају исту адресу, *pунутра main()је такође 11.

Занимљиви Чланци...