struct registro{
char* nome;
char* telefone;
};
struct registro{
char* nome;
char* telefone;
};
Valeu por compartilhar essa maneira! nao conhecia
Manda a outra maneira, não consigo imaginar outro jeito de fazer, ainda não possuo uma grande familiaridade com a linguagem.
Olá, Henrique! Boa tarde!
Outra forma de definir uma struct é usando arrays de caracteres fixos ao invés de ponteiros para char.
#define TAMANHO_MAXIMO 100
struct registro {
char nome[TAMANHO_MAXIMO];
char telefone[TAMANHO_MAXIMO];
};
Com essa abordagem, você pode usar a struct da seguinte maneira:
#include <stdio.h>
#define TAMANHO_MAXIMO 100
struct registro
{
char nome[TAMANHO_MAXIMO];
char telefone[TAMANHO_MAXIMO];
};
int main()
{
struct registro pessoa;
// Atribuição de valores aos membros da struct
printf("Digite o nome: ");
scanf("%s", pessoa.nome);
printf("Digite o telefone: ");
scanf("%s", pessoa.telefone);
// Impressão dos valores
printf("Nome: %s\n", pessoa.nome);
printf("Telefone: %s\n", pessoa.telefone);
return(0);
}
A W3Schools tem documentações confiáveis sobre diversas linguagens e você pode ler em inglês ou trocar o idioma para Português, por exemplo. Leia sobre Structs e outros assuntos lá também, se desejar
Se você está começando e ainda não possui domínio de fundamentos da linguagem, talvez seja uma opção considerar este tipo de implementação, pois, além de simplificar seu código, evita problemas com alocação de memória dinâmica.
No exemplo acima, nome e telefone são arrays de caracteres com um tamanho máximo definido pela constante TAMANHOMAXIMO. Isso evita o uso de ponteiros e alocação de memória dinâmica.
Na implementação
struct registro{
char* nome;
char* telefone;
};
Os ponteiros nome e telefone apontam para áreas de memória que podem ser alocadas dinamicamente usando funções como malloc() ou calloc(). Isso significa que é responsabilidade do programador alocar e liberar a memória corretamente. Se a memória não for liberada da forma certa (usando free()), pode ter memory leaks (vazamento de memória).
Outro ponto é que se o ponteiro nome ou telefone não forem inicializados da forma certa ou apontarem para uma área de memória inválida, tentar acessar ou modificar os dados através desses ponteiros pode resultar em comportamento indefinido, como segmentation fault ou corrupção de memória.
Há sempre vantagens e desvantagens em todo tipo de implementação, mas para iniciar, recomendo trabalhar com os arrays mesmo e depois estudar ponteiros, alocação de memória e como liberar a memória após o uso.
. . .