Ir para o conteúdo
tdias84

duvida sobre ponteiros

Mensagens Recomendadas

tdias84    0
tdias84

Posso saber porque que tenho um programa a dar este erro:

"alineaC1.c:39: warning: assignment makes pointer from integer without a cast"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Nao resolvas o warning com um cast!!! O cast é quase de certeza a solucao errada. A solucao certa ((*) aposto que) é fazer o

#include <stdlib.h>

(*) Essa mensagem costuma aparecer no gcc quando se faz

ptr = malloc(sizeof *ptr);

Sem o #include, o compilador assume que a funcao devolve um int e como ptr é um ponteiro ele avisa.

Com o #include o compilador sabe que a funcao devolve um ponteiro e aceita a instrucao sem problema.


O cast, sem o #include, o que iria fazer era fazer com que o compilador fizesse codigo para converter um int num ponteiro. Mas como a funcao nao devolve um int, essa conversao poderia ser fatal: basta pensar que um ponteiro precisa de 64 bits e um int de 32 --- a conversao que o compilador tentaria executar deitaria fora 32 bits do ponteiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Flinger    50
Flinger

Exemplo simples:

a função scanf() recebe um apontador para cada variável a ler:

int main()
{
    int a;
    scanf("%d",&a);
    printf("li o %d\n",a);
  return 0;
}

Este código está correcto.

int main()
{
    int a;
    scanf("%d",a);
    printf("li o %d\n",a);
  return 0;
}

Neste código, não estás a passar ao scanf um apontador, mas sim o valor de a, pelo que o compilador te deverá dar esse warning.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade