Como declarar uma struct em C

Agora que explicamos no tutorial passado sobre o que são as structs, para que servem e onde usá-las, vamos explicar como usar ditas cujas estruturas.

Nesse tutorial de C vamos ensinar você a declarar, preencher os elementos da struct, acessar e trabalhar com os elementos de qualquer struct.

Como declarar uma struct em C

Como já foi dito, struct nada mais é que um conjunto, ou bloco, de variáveis.
A sintaxe é a seguinte

struct Nome_de_sua_struct
{
                tipos nome_dos_tipos;
};

Vamos declarar, como exemplo, uma struct para representar os dados dos funcionários:

struct Funcionario
{
                int idade;
                char *nome;
                float salario;
};


O tipo struct

Podemos ver as structs como um tipo de dado.
Por exemplo, “Funcionario”, que foi declarado anteriormente, pode ser visto como um novo de tipo de variável. É uma variável, ou um tipo, que define os funcionários.

Essa visão, de que criamos um novo tipo de variável, é tão certa que é possível criar e declarar mais variáveis do tipo “struct Funcionario”.
A sintaxe para declarar outras structs do tipo “struct Funcionario” é:

struct Funcionario empregado1;
struct Funcionario chefe;
struct Funcionario secretaria;

É aí que reside a beleza e importância das structs.
Note que no momento da criação do modelo da struct “Funcionario”, declaramos um inteiro, uma string e um float dentro da struct.
Assim, todas as structs do tipo “Funcionario” terão uma variável inteira, uma string e um float.

Sempre que declaramos uma nova struct desse tipo, essas variáveis são automaticamente criadas e terão essas variáveis. O que é uma verdadeira mão na roda.

Outra maneira de declarar variáveis de um tipo struct que queremos, é criar esses elementos  após as chaves na hora de criar a struct Funcionario.
Veja:

struct Funcionario
{
                int idade;
                char *nome;
                float salario;
}empregado1, chefe, secretaria;

Pronto, agora existem 3 variáveis do tipo “struct Funcionario”: ‘empregado1’, ‘chefe’ e ‘secretaria’.

No próximo tutorial de nosso curso de C, vamos mostrar como acessar e alterar os elementos da struct, além de mostrar um exemplo através de um exercício resolvido e comentado.

10 comentários:

Anônimo disse...

onde diz "... criar esses elementos após os colchetes na ..." não seria após fechar a chaves?

Apostila C Progressivo disse...

Opa! Pequeno deslize!
Muitíssimo obrigado pela contribuição, amigo.

Esperamos que ninguém tenha se prejudicado...

Matheus disse...

Creio que onde explica "A sintaxe para declarar outras structs do tipo “struct Funcionario” é", na "struct secretaria;" faltou o "Funcionario".

A apostila é ótima. Parabéns pelo excelente trabalho.

Anônimo disse...

Estou cursando engenharia de produção na usp são carlos e tenho problemas com computação haha... mas devo admitir que seus tutoriais são muito melhores do que qualquer explicação de minha professora até agora (:
Muitíssimo obrigado!

LUCILANEO SANTOS disse...

Ótimos tutoriais !!

Tiago Levi Pacheco disse...

Quando do exemplo de declaração de uma struct porquê a variável tipo char *nome foi declarada como ponteiro?
struct Funcionario
{
int idade;
-----> char *nome;<-----
float salario;
};

Apostila C Progressivo disse...

Olá Tiago,

Ponteiro de char é muito usado em strings.

Você cria uma string, através de alocação dinâmica de memória por exemplo, e faz esse ponteiro de char apontar pra essa string.

Quando a gente faz isso, esse ponteiro aponta pro endereço do primeiro char da string.

Anônimo disse...

o site é exelente! com uma lingaugem fácil turna o complicado em descomplicado! pro site ficar perfeito só falta ter em cada sessão uma lista de exercicios com respostas.

Anônimo disse...

#include

struct computador {

int ano;
char tipo_cpu[10];
};
typdef struct computador EC;
//declaraçao da funçaoo
EC ReceberDados(EC s)

int main(void)
{EC modelo;
modelo = receberdados(modelo);
printf("ano:%d\n",modelo.ano);
printf("tipode
cpu:%s\n",modelo.tipo_cpu);

reeturn exit_success
}
EC receberdados(Ec s)
{
printf("tipo da cpu?\n");
gets (s.tipo_cpu);
printf("ano de fabricaçao?\n");
scanf("%d", &.ano);

return s;




ola gostaria de entender este programa pois a parte que esta EC Receberdado n entendi o q ela faz gostaria q me explicasse o programa obrigado

Anônimo disse...

Pode ser uma dúvida boba, mas, qual a diferença entre declarar a estrutura antes e depois do int main?

Gostou desse tutorial de C?
Sabia que o acervo do portal C Progressivo é o mesmo, ou maior que, de um livro ou curso presencial?
E o melhor: totalmente gratuito.

Mas para nosso projeto se manter é preciso divulgação.
Para isso, basta curtir nossa página no Facebook e/ou clicar no botão +1 do Google.
Contamos e precisamos de seu apoio.