W tym samouczku nauczysz się przekazywać zmienne strukturalne jako argumenty do funkcji. Nauczysz się zwracać strukturę z funkcji za pomocą przykładów.
Podobnie jak w przypadku zmiennych typu wbudowanego, można również przekazywać zmienne struktury do funkcji.
Przekazywanie struktur do funkcji
Zalecamy zapoznanie się z tymi samouczkami, zanim nauczysz się przekazywać struktury do funkcji.
- Struktury C.
- Funkcje C.
- Funkcja zdefiniowana przez użytkownika
Oto, jak możesz przekazać struktury do funkcji
#include struct student ( char name(50); int age; ); // function prototype void display(struct student s); int main() ( struct student s1; printf("Enter name: "); // read string input from the user until is entered // is discarded scanf("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); display(s1); // passing struct as an argument return 0; ) void display(struct student s) ( printf("Displaying information"); printf("Name: %s", s.name); printf("Age: %d", s.age); )
Wynik
Wpisz imię i nazwisko: Obligacja Podaj wiek: 13 Wyświetlanie informacji Imię: Obligat Wiek: 13
Tutaj struct student
tworzona jest zmienna strukturalna s1 typu . Zmienna jest przekazywana do display()
funkcji za pomocą display(s1);
instrukcji.
Zwróć strukturę z funkcji
Oto jak możesz zwrócić strukturę z funkcji:
#include struct student ( char name(50); int age; ); // function prototype struct student getInformation(); int main() ( struct student s; s = getInformation(); printf("Displaying information"); printf("Name: %s", s.name); printf("Roll: %d", s.age); return 0; ) struct student getInformation() ( struct student s1; printf("Enter name: "); scanf ("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); return s1; )
Tutaj getInformation()
funkcja jest nazywana s = getInformation();
instrukcją using . Funkcja zwraca strukturę typu struct student
. Zwrócona struktura jest wyświetlana z main()
funkcji.
Zwróć uwagę, że zwracanym typem getInformation()
jest również struct student
.
Przekazywanie struktury przez odniesienie
Możesz również przekazywać struktury przez referencję (w podobny sposób, jak przekazujesz zmienne typu wbudowanego przez referencję). Przed kontynuowaniem sugerujemy przeczytanie samouczka przekazywania przez odniesienie.
Podczas przekazywania przez referencję adresy pamięci zmiennych struktur są przekazywane do funkcji.
#include typedef struct Complex ( float real; float imag; ) complex; void addNumbers(complex c1, complex c2, complex *result); int main() ( complex c1, c2, result; printf("For first number,"); printf("Enter real part: "); scanf("%f", &c1.real); printf("Enter imaginary part: "); scanf("%f", &c1.imag); printf("For second number, "); printf("Enter real part: "); scanf("%f", &c2.real); printf("Enter imaginary part: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("result.real = %.1f", result.real); printf("result.imag = %.1f", result.imag); return 0; ) void addNumbers(complex c1, complex c2, complex *result) ( result->real = c1.real + c2.real; result->imag = c1.imag + c2.imag; )
Wynik
Dla pierwszej liczby wprowadź część rzeczywistą: 1.1 Wprowadź część urojoną: -2,4 Dla drugiej liczby wprowadź część rzeczywistą: 3.4 Wprowadź część urojoną: -3,2 wynik.real = 4,5 wynik.imag = -5,6
W powyższym programie do addNumbers()
funkcji przekazywane są trzy zmienne strukturalne c1, c2 oraz adres wyniku . Tutaj wynik jest przekazywany przez odniesienie.
Gdy zmienna wynikowa wewnątrz funkcji addNumbers()
zostanie zmieniona, zmienna wynikowa wewnątrz main()
funkcji również zostanie odpowiednio zmieniona.