Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Dominando Structs em C: Passagem, Retorno e Manipulação por Referência

Structs em C: Passagem, Retorno e Manipulação por Referência

Na programação em C, estruturas permitem agrupar dados relacionados em uma única entidade. Este guia aborda três operações essenciais com structs: passá-las para funções, retorná-las de funções e manipulá-las por referência. Cada seção inclui explicação concisa e exemplo funcional.


Passando structs para funções

Assim como tipos embutidos, variáveis struct podem ser passadas diretamente para uma função. Antes de começar, revise structs em C, funções em C e funções definidas pelo usuário.

O exemplo a seguir demonstra como passar uma struct aluno para uma função que imprime seu conteúdo.

#include <stdio.h> struct aluno { char nome[50]; int idade; }; // Protótipo da função void exibir(struct aluno s); int main() { struct aluno s1; printf("Digite o nome: "); scanf("%[^ ]%%*c", s1.nome); // lê até nova linha printf("Digite a idade: "); scanf("%d", &s1.idade); exibir(s1); // passa struct para função return 0; } void exibir(struct aluno s) { printf("\nExibindo informações\n"); printf("Nome: %s", s.nome); printf("\nIdade: %d", s.idade); } 

Saída

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

Retornando uma struct de uma função

Funções podem retornar structs inteiras, permitindo separação limpa entre coleta e processamento de dados. O exemplo abaixo coleta informações do aluno dentro de uma função e as retorna para main.

#include <stdio.h> struct aluno { char nome[50]; int idade; }; // Protótipo da função struct aluno obterInformacao(); int main() { struct aluno s; s = obterInformacao(); printf("\nExibindo informações\n"); printf("Nome: %s", s.nome); printf("\nIdade: %d", s.idade); return 0; } struct aluno obterInformacao() { struct aluno s1; printf("Digite o nome: "); scanf("%[^ ]%%*c", s1.nome); printf("Digite a idade: "); scanf("%d", &s1.idade); return s1; } 

O tipo de retorno da função corresponde à struct que ela retorna, garantindo segurança de tipo e clareza.


Passando uma struct por referência

Quando você precisa que uma função modifique uma struct, passe seu endereço (um ponteiro). Isso é análogo a passar tipos embutidos por referência. O exemplo a seguir soma dois números complexos e armazena o resultado através de um ponteiro.

#include <stdio.h> typedef struct Complexo { float real; float imag; } complexo; void somarNumeros(complexo c1, complexo c2, complexo *resultado); int main() { complexo c1, c2, resultado; printf("Para o primeiro número,\n"); printf("Digite a parte real: "); scanf("%f", &c1.real); printf("Digite a parte imaginária: "); scanf("%f", &c1.imag); printf("Para o segundo número,\n"); printf("Digite a parte real: "); scanf("%f", &c2.real); printf("Digite a parte imaginária: "); scanf("%f", &c2.imag); somarNumeros(c1, c2, &resultado); printf("\nresultado.real = %.1f\n", resultado.real); printf("resultado.imag = %.1f", resultado.imag); return 0; } void somarNumeros(complexo c1, complexo c2, complexo *resultado) { resultado->real = c1.real + c2.real; resultado->imag = c1.imag + c2.imag; } 

Saída

Para o primeiro número, Digite a parte real: 1.1 Digite a parte imaginária: -2.4 Para o segundo número, Digite a parte real: 3.4 Digite a parte imaginária: -3.2 resultado.real = 4.5 resultado.imag = -5.6 

Como resultado é passado por referência, qualquer alteração dentro de somarNumeros afeta imediatamente a variável em main.


Dominando essas técnicas, você pode escrever código C mais modular, legível e eficiente que aproveita todo o poder das estruturas.

Linguagem C

  1. Entendendo Structs em C#: Definição, Uso e Diferenças-Chave
  2. Funções Amigas e Classes Amigas em C++: Dominando o Controle de Acesso
  3. Dominando Structs em C: Definição, Variáveis, Acesso e Exemplos Avançados
  4. Dominando Structs e Ponteiros em C: Guia Prático
  5. Entendendo a Estrutura de Programas C: Guia para Iniciantes
  6. Entendendo Tipos de Dados em C: Guia Abrangente
  7. Entendendo Constantes e Literais em C: Tipos, Uso e Boas Práticas
  8. Dominando Funções em C: Estrutura, Declaração e Boas Práticas
  9. Dominando Sobrecarga em C++: Funções e Operadores Explicados
  10. Transformadores Elétricos Explicados: Função, Design e Aplicações Industriais