Declarando uma Struct
Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 39 de 63.
Agora que você entende o que é uma struct, é hora de aprender a criar seus próprios tipos de estrutura. Declarar uma struct em C segue uma sintaxe específica que define o modelo para o seu tipo de dados personalizado.
A sintaxe básica para declarar uma struct é:
struct StructureName {
datatype member1;
datatype member2;
// ... mais membros
};Veja como cada parte funciona: você começa com a palavra-chave struct, seguida por um nome para sua estrutura; depois, liste todas as variáveis-membro dentro de chaves. Cada membro é declarado assim como uma variável comum, com seu tipo de dado e nome. Não se esqueça do ponto e vírgula após a chave de fechamento!
Por exemplo, para criar uma estrutura que represente um ponto no espaço 2D:
struct Point {
int x;
int y;
};Esta declaração cria um novo tipo de dado chamado struct Point que contém dois membros inteiros: x e y. Depois de declarado, esse tipo de estrutura pode ser usado em todo o seu programa para criar variáveis que armazenam informações de coordenadas de maneira organizada.
Desafio
FácilCrie um programa em C que defina uma struct para representar um livro em um sistema de biblioteca. Seu programa deve:
- Definir uma
structchamadaBookque contenha os seguintes membros:- Um inteiro
idpara armazenar o número de identificação do livro - Um array de caracteres
titlecom tamanho 50 para armazenar o título do livro - Um inteiro
pagespara armazenar o número de páginas - Um float
pricepara armazenar o preço do livro
- Um inteiro
- Após definir a struct, imprima uma mensagem de confirmação:
Book struct defined successfully! - Imprima o tamanho da
Bookstruct em bytes usandosizeof()no formato:Size of Book struct: [size] bytes - Imprima individualmente o tamanho de cada membro:
Size of id: [size] bytesSize of title: [size] bytesSize of pages: [size] bytesSize of price: [size] bytes
Este desafio testa sua compreensão da sintaxe de declaração de structs, incluindo o uso correto da palavra-chave struct, as declarações de membros com tipos de dados apropriados e o ponto e vírgula após a chave de fechamento. Você também explorará como C aloca memória para membros de structs usando o operador sizeof().
Lembre-se de que os valores exatos de tamanho podem variar dependendo da arquitetura do seu sistema, mas a sintaxe de definição da struct deve estar correta para que o programa compile e seja executado com sucesso.
Experimente você mesmo
#include <stdio.h>
int main() {
// TODO: Defina sua struct Book aqui
// Imprime a mensagem de confirmação
printf("Book struct defined successfully!\n");
// TODO: Imprima o tamanho da struct Book e de seus membros
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres7Estruturas (structs)
O que é uma Struct?Declarando uma StructCriando Variáveis de StructAcessando Membros de uma StructInicializando StructsRecapitulação: Struct de Dados de Aluno2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um ContatoPratique por conta própria: Compilador de C online