C Struct și funcții

În acest tutorial, veți învăța să transmiteți variabilele struct ca argumente unei funcții. Veți învăța să returnați struct dintr-o funcție cu ajutorul exemplelor.

Similar cu variabilele tipurilor încorporate, puteți transmite variabilele structurii unei funcții.

Trecerea structurilor la funcții

Vă recomandăm să învățați aceste tutoriale înainte de a învăța cum să treceți structuri la funcții.

  • Structuri C
  • Funcții C
  • Funcție definită de utilizator

Iată cum puteți trece structurile unei funcții

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

Ieșire

 Introduceți numele: Obligația Introduceți vârsta: 13 Afișarea informațiilor Nume: Vârsta obligațiunii: 13 

Aici struct studentse creează o variabilă struct s1 de tip . Variabila este transmisă display()funcției folosind display(s1);instrucțiune.

Returnează structura dintr-o funcție

Iată cum puteți returna structura dintr-o funcție:

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

Aici, getInformation()funcția se numește folosind s = getInformation();instrucțiune. Funcția returnează o structură de tip struct student. Structura returnată este afișată din main()funcție.

Observați că, și tipul de returnare getInformation()este struct student.

Trecerea structului prin referință

De asemenea, puteți trece structuri prin referință (într-un mod similar, așa cum treceți variabile de tip încorporat prin referință). Vă sugerăm să citiți tutorialul de referință înainte de a continua.

În timpul trecerii prin referință, adresele de memorie ale variabilelor struct sunt transmise funcției.

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

Ieșire

 Pentru primul număr, introduceți partea reală: 1.1 Introduceți partea imaginară: -2.4 Pentru al doilea număr, introduceți partea reală: 3.4 Introduceți partea imaginară: -3,2 result.real = 4,5 result.imag = -5,6 

În programul de mai sus, trei variabile de structură c1, c2 și adresa rezultatului sunt transmise addNumbers()funcției. Aici, rezultatul este trecut prin referință.

Când variabila de rezultat din interior addNumbers()este modificată, variabila de rezultat din main()funcție este, de asemenea, modificată în consecință.

Articole interesante...