C Przekaż adresy i wskaźniki do funkcji

W tym samouczku za pomocą przykładów nauczysz się przekazywać adresy i wskaźniki jako argumenty do funkcji.

W programowaniu w C możliwe jest również przekazywanie adresów jako argumentów do funkcji.

Aby zaakceptować te adresy w definicji funkcji, możemy użyć wskaźników. To dlatego, że do przechowywania adresów używane są wskaźniki. Weźmy przykład:

Przykład: Przekaż adresy do funkcji

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

Po uruchomieniu programu wynik będzie następujący:

 num1 = 10 num2 = 5

Adresy num1 i num2 są przekazywane do swap()funkcji za pomocą swap(&num1, &num2);.

Wskaźniki n1 i n2 akceptują te argumenty w definicji funkcji.

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

Kiedy * n1 i * n2 są zmieniane wewnątrz swap()funkcji, zmienia się także num1 i num2 wewnątrz funkcji main ().

Wewnątrz swap()funkcji *n1i *n2zamienione. Dlatego też num1 i num2 są również zamieniane.

Zauważ, że swap()nic nie zwraca; jego typ zwrotu to void.

Przykład 2: przekazywanie wskaźników do funkcji

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

Tutaj wartość przechowywana w p *pwynosi początkowo 10.

Następnie przekazaliśmy wskaźnik p do addOne()funkcji. Wskaźnik ptr pobiera ten adres w addOne()funkcji.

Wewnątrz funkcji zwiększyliśmy wartość przechowywaną w ptr o 1 za pomocą (*ptr)++;. Ponieważ wskaźniki ptr i p mają ten sam adres, *pwewnątrz main()również jest 11.

Interesujące artykuły...