Acessando Membros de uma Struct
Parte da seção Logic & Flow do Journey de C da Coddy — lição 41 de 63.
Agora que você já sabe criar variáveis struct, precisa aprender a trabalhar com os dados armazenados dentro delas. O operador de ponto (.) é a sua chave para acessar e modificar os membros individuais de uma variável struct.
A sintaxe para acessar membros de uma struct é direta:
structVariable.memberNameUsando nosso exemplo de struct Point, você pode tanto ler quanto escrever em seus membros:
struct Point p1;
// Escrevendo em membros da struct
p1.x = 10;
p1.y = 20;
// Lendo de membros da struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);O operador de ponto funciona exatamente como acessar qualquer outra variável - você pode usá-lo em atribuições, operações aritméticas, chamadas de função ou em qualquer lugar onde usaria uma variável comum desse tipo. Cada membro se comporta como uma variável independente de seu tipo declarado, permitindo que você manipule os dados da struct de uma forma organizada e intuitiva.
Desafio
FácilCrie um programa em C que demonstre como acessar e modificar membros de uma struct usando o operador ponto. Seu programa deve:
- Definir uma
structchamadaCarcom os seguintes membros:- Um inteiro
yearpara armazenar o ano de fabricação - Um array de caracteres
brandcom tamanho 20 para armazenar a marca do carro - Um inteiro
mileagepara armazenar a quilometragem atual - Um float
pricepara armazenar o preço do carro
- Um inteiro
- Criar uma variável
CarchamadamyCar - Ler os seguintes valores de entrada e atribuí-los aos membros da struct usando o operador ponto:
- Ler um inteiro para o ano e atribuí-lo a
myCar.year - Ler uma string para a marca e atribuí-la a
myCar.brand - Ler um inteiro para a quilometragem e atribuí-lo a
myCar.mileage - Ler um float para o preço e atribuí-lo a
myCar.price
- Ler um inteiro para o ano e atribuí-lo a
- Após ler todos os valores, realizar as seguintes operações:
- Aumentar a quilometragem em 1000 usando
myCar.mileage += 1000; - Diminuir o preço em 500.0 usando
myCar.price -= 500.0;
- Aumentar a quilometragem em 1000 usando
- Imprimir as informações do carro usando o operador ponto para acessar cada membro neste formato exato:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Este desafio testa sua compreensão do operador ponto tanto para leitura quanto para escrita em membros de uma struct. Você praticará a atribuição de valores a membros de struct, a realização de operações aritméticas neles e o acesso a eles para saída.
Por exemplo, se a entrada for:
2020
Toyota
50000
25000.50Sua saída deve ser:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Folha de consulta
O operador ponto (.) é usado para acessar e modificar membros individuais de uma variável struct.
Sintaxe para acessar membros de uma struct:
structVariable.memberNameExemplo de leitura e escrita em membros de uma struct:
struct Point p1;
// Escrevendo em membros da struct
p1.x = 10;
p1.y = 20;
// Lendo de membros da struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);O operador ponto pode ser usado em atribuições, operações aritméticas, chamadas de função ou em qualquer lugar onde você usaria uma variável comum daquele tipo. Cada membro se comporta como uma variável independente de seu tipo declarado.
Experimente você mesmo
#include <stdio.h>
#include <string.h>
// TODO: Defina a struct Car aqui
int main() {
// TODO: Crie uma variável Car chamada myCar
// Ler valores de entrada
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Atribua os valores de entrada aos membros da struct usando o operador ponto
// TODO: Modifique a quilometragem (mileage) e o preço (price) conforme especificado
// TODO: Imprima os detalhes do carro usando o operador ponto
printf("Car Details:\n");
// Imprima Ano (Year), Marca (Brand), Quilometragem (Mileage) e Preço (Price) aqui
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 Logic & Flow
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 Contato