C struktūra ir funkcijos

Šioje pamokoje sužinosite struktūros kintamuosius kaip argumentus perduoti funkcijai. Iš pavyzdžių išmoksite grąžinti struktūrą iš funkcijos.

Panašiai kaip integruotų tipų kintamieji, taip pat galite perduoti struktūros kintamuosius funkcijai.

Struktūrų perdavimas funkcijoms

Mes rekomendavome išmokti šias mokymo programas prieš išmokdami perduoti struktūras funkcijoms.

  • C struktūros
  • C funkcijos
  • Vartotojo nustatyta funkcija

Štai kaip galite perduoti struktūras funkcijai

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

Rezultatas

 Įveskite vardą: Obligacija Įveskite amžių: 13 Rodoma informacija Vardas: Obligacijų amžius: 13 

Čia sukuriamas struktūros kintamasis s1 tipo struct student. Kintamasis perduodamas display()funkcijai naudojant display(s1);teiginį.

Grąžinti struktūrą iš funkcijos

Štai kaip galite grąžinti struktūrą iš funkcijos:

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

Čia getInformation()funkcija vadinama naudojant s = getInformation();teiginį. Funkcija pateikia tipo struktūrą struct student. Grąžinta struktūra rodoma iš main()funkcijos.

Atkreipkite dėmesį, kad grąžinimo tipas getInformation()taip pat yra struct student.

Struktūros perdavimas pagal nuorodą

Struktūras taip pat galite perduoti pagal nuorodą (panašiai kaip perduodate įmontuoto tipo kintamuosius pagal nuorodas). Prieš tęsdami, siūlome perskaityti „per pavyzdį“ pamoką.

Perduodant nuorodą, struktūros kintamųjų atminties adresai perduodami funkcijai.

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

Rezultatas

 Pirmam skaičiui įveskite tikrąją dalį: 1.1 Įveskite įsivaizduojamą dalį: -2,4 Antram skaičiui įveskite tikrąją dalį: 3,4 Įveskite įsivaizduojamą dalį: -3,2 rezultatas. Realus = 4,5 rezultatas. Imag = -5,6 

Pirmiau pateiktoje programoje addNumbers()funkcijai perduodami trys struktūros kintamieji c1, c2 ir rezultato adresas . Čia rezultatas perduodamas remiantis nuoroda.

Kai keičiamas rezultato kintamasis viduje, atitinkamai addNumbers()keičiamas ir rezultato kintamasis main()funkcijos viduje .

Įdomios straipsniai...