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

Когато стартирате програмата, изходът ще бъде:

 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.

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