English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriais Básicos da Linguagem C

Controle de Fluxo da Linguagem C

Função do C

Array do C

Ponteiro do C

String do C

Estruturas da Linguagem C

Arquivos da Linguagem C

Outros C

Manual de Referência do Linguagem C

Estrutura e função do C

Neste tutorial, você aprenderá a passar uma variável de estrutura como parâmetro para uma função. Você aprenderá a retornar struct de função com exemplos.

Da mesma forma que variáveis de tipos integrados, você também pode passar variáveis de estruturas para funções.

Passar estrutura para função

Recomendamos que você estude esses tutoriais antes de aprender como passar uma estrutura para uma função.

Esta é a maneira de passar uma estrutura para uma função

#include <stdio.h>
struct student {
   char nome[50];
   int idade;
};
//Protótipo da função
void display(struct student s);
int main() {
   struct student s1;
   printf("Introduza o nome: ");
    //Ler a string de entrada do usuário até a entrada \n
    // O \n é descartado
   scanf("%[^\n]%*c",*c", s1.name);
   printf("Introduza a idade: ");
   scanf("%d", &s1.age);
   display(s1); //Passar a struct como parâmetro
   return 0;
}
void display(struct student s) {
   printf("\nMostrar informações\n");
   printf("Nome: %s", s.nome);
   printf("\nIdade: %d", s.idade);
}

Resultado de saída

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

Aqui, foi criado o variável struct student tipo struct s1. Usar display(s1Passar a variável para a declaração da função display().

Retorno de estrutura de função

Esta é a maneira de retornar uma estrutura de função:

#include <stdio.h>
struct student
{
    char nome[50];
    int idade;
};
//Protótipo da função
struct student getInformation();
int main()
{
    struct student s;
    s = getInformation();
    printf("\nMostrar informações\n");
    printf("Nome: %s", s.name);
    printf("\nMatrícula: %d", s.age)}
    
    return 0;
}
struct student getInformation() 
{
  struct student s1;
  printf("Introduza o nome: ");
  scanf("%[^\n]%c", &s*c", s1.name);
  printf("Introduza a idade: ");
  scanf("%d", &s1.age);
  
  return s1;
}	

Aqui, use s = getInformation() para chamar a declaração da função getInformation(). O função retorna uma estrutura do tipo struct student. Exiba a estrutura retornada no função main().

Atenção, o tipo de retorno de getInformation() também é struct student.

Passagem por referência de estruturas

Você também pode passar estruturas por referência (como você passa variáveis de tipos embutidos por referência). Recomendamos que você leiaReferênciaGuia.

Durante a passagem por referência, o endereço de memória da variável de estrutura será passado para a função.

#include <stdio.h>
typedef struct Complex
{
    float real;
    float imag;
} complex;
void addNumbers(complex c1, complex c2, complex *result);
int main()
{
    complex c1, c2, result;
    printf("Introduza o primeiro número:\n");
    printf("Introduza o módulo real: ");
    scanf("%f", &c1.real);
    printf("Introduza o módulo imaginário: ");
    scanf("%f", &c1.imag);
    printf("Introduza o segundo número: 
");
    printf("Introduza o módulo real: ");
    scanf("%f", &c2.real);
    printf("Introduza o módulo imaginário: ");
    scanf("%f", &c2.imag);
    addNumbers(c1, c2, &result);
    printf("\nresult.real = %.1f\n", 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 de saída

Introduza o primeiro número:
Introduza o módulo real: 5.8
Introduza o módulo imaginário: -3.4
Introduza o segundo número:
Introduza o módulo real: 9.9
Introduza o módulo imaginário: -4.5
result.real = 15.7
result.imag = -7.9

Nos programas acima, três variáveis de estrutura c1,c2E o endereço do resultado é passado para a função addNumbers(). Aqui, o resultado é passado por referência.

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