Estrutura e funções C

Neste tutorial, você aprenderá a passar variáveis ​​de estrutura como argumentos para uma função. Você aprenderá a retornar struct de uma função com a ajuda de exemplos.

Semelhante a variáveis ​​de tipos internos, você também pode passar variáveis ​​de estrutura para uma função.

Passando structs para funções

Recomendamos que você aprenda esses tutoriais antes de aprender como passar estruturas para funções.

  • Estruturas C
  • Funções C
  • Função definida pelo usuário

Veja como você pode passar estruturas para uma função

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

Resultado

 Digite o nome: Bond Digite a idade: 13 Exibindo informações Nome: Bond Idade: 13 

Aqui, uma variável de estrutura s1 do tipo struct studenté criada. A variável é passada para a display()função usando a display(s1);instrução.

Retornar estrutura de uma função

Veja como você pode retornar a estrutura de uma função:

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

Aqui, a getInformation()função é chamada usando a s = getInformation();instrução. A função retorna uma estrutura do tipo struct student. A estrutura retornada é exibida a partir da main()função.

Observe que o tipo de retorno de getInformation()também é struct student.

Passando estrutura por referência

Você também pode passar estruturas por referência (da mesma forma como passa variáveis ​​do tipo integrado por referência). Sugerimos que você leia o tutorial passagem por referência antes de prosseguir.

Durante a passagem por referência, os endereços de memória das variáveis ​​de estrutura são passados ​​para a função.

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

Resultado

 Para o primeiro número, insira a parte real: 1.1 Insira a parte imaginária: -2,4 Para o segundo número, insira a parte real: 3.4 Insira a parte imaginária: -3,2 result.real = 4,5 result.imag = -5,6 

No programa acima, três variáveis ​​de estrutura c1, c2 e o endereço do resultado são passados ​​para a addNumbers()função. Aqui, o resultado é passado por referência.

Quando a variável de resultado dentro de addNumbers()é alterada, a variável de resultado dentro da main()função também é alterada de acordo.

Artigos interessantes...