operador seta em c [RESOLVIDO]

1. operador seta em c [RESOLVIDO]

douglas
qwerty_0

(usa Debian)

Enviado em 05/05/2024 - 13:55h

estou tentando aprender a usar o ->, mas não estou conseguindo!


#include <stdlib.h>
#include <stdio.h>
int main(void){
struct bank{
char idade;
char nome[50];
};
struct bank db;
int *p;
p = (struct dados *) malloc(sizeof(struct dados *));
p = &db;
p->idade = 20;
free(p);
p = NULL;

return 0;
}




  


2. MELHOR RESPOSTA

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 05/05/2024 - 13:55h

Para acessar um membro de uma struct usando o operador seta (->) em C, você deve primeiro alocar memória corretamente para a struct. No seu código, a alocação de memória está incorreta. Veja como corrigir:

[code]
#include <stdlib.h>
#include <stdio.h>

struct bank{
char idade;
char nome[50];
};

int main(void){
struct bank *db; // corrigido para ponteiro de struct bank
db = (struct bank *) malloc(sizeof(struct bank));
db->idade = 20;
free(db);
db = NULL;

return 0;
}
[\/code]

Neste trecho corrigido, a struct é alocada corretamente como `struct bank *db`, a memória é alocada corretamente com `malloc(sizeof(struct bank))` e o acesso ao membro `idade` é feito corretamente com `db->idade = 20;`. Lembre-se de sempre verificar se a alocação de memória foi bem-sucedida e de liberar a memória alocada com `free()` para evitar vazamento de memória.





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts