Fácil C
Criando e imprimindo uma struct
Enunciado
Defina uma struct chamada Ponto com dois campos int x e int y. No main, crie uma variável Ponto p = {3, 4} e imprima os valores no formato (x, y).
Requisitos
- Usar
structcom camposxey. - Inicializar com
{3, 4}. - Imprimir exatamente
(3, 4).
Código inicial
#include <stdio.h>
// Defina a struct Ponto aqui
int main(void) {
// Crie e imprima o ponto
return 0;
}
Saída esperada
(3, 4)
Ver dica
Acesse os campos com p.x e p.y dentro do printf.
Mostrar solução
#include <stdio.h>
// Define o tipo Ponto com dois inteiros
struct Ponto {
int x;
int y;
};
int main(void) {
// Inicializa os campos na ordem de declaração
struct Ponto p = {3, 4};
// Acessa cada campo com o operador ponto
printf("(%d, %d)\n", p.x, p.y);
return 0;
}
Passo a passo
struct Ponto { int x; int y; };declara um novo tipo composto com dois campos inteiros.struct Ponto p = {3, 4};cria a variávelpe inicializaxcom 3 eycom 4, na ordem dos campos.p.xep.yacessam os campos individualmente usando o operador ponto.printfformata a saída como(3, 4)e a quebra de linha\nfinaliza.
Por que funciona
A struct reserva espaço para os dois inteiros e o inicializador posicional preenche cada campo. O operador . permite ler cada membro diretamente, pois p é uma variável comum (não um ponteiro).
Erros comuns
- Esquecer o ponto e vírgula após a definição da struct:
struct Ponto { int x; int y; }gera erro de compilação. Corrija com};. - Inverter a ordem dos campos na inicialização:
{4, 3}imprimiria(4, 3). Mantenha a ordem declarada. - Usar
p->xem uma variável comum:->só vale para ponteiros. Usep.x.
Outra forma de resolver
Inicialização nomeada, útil quando a struct tem muitos campos:
struct Ponto p = {.y = 4, .x = 3};
Saída esperada
(3, 4)