Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Tomás Mendes

Ponteiro para NULL é o mesmo que 0 ?

Mensagens Recomendadas

Tomás Mendes    0
Tomás Mendes

Boa noite,

Tenho um teste na quarta-feira, estou a fazer uns testes e aparece-me isto:

void print()
{
  struct item *px = first;
  while(px) {
    printf("%c", px->value);
    px = px->next;
  }
  printf("\n");
}

Isso é uma função que imprime uma lista de caracteres (pelo menos é o que parece ser). Esse ciclo while para quando px for falso, ou seja quando px apontar para 0. Sabe-se que o no último elemento, o campo next é NULL. Então a conclusão a que posso chegar é que NULL é representado pelo valor 0.

Estou a pensar bem?

Tomás

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrosorio    5
pedrosorio

Yep

"Null is a special pointer value (or other kind of object reference) used to signify that a pointer intentionally does not point to (or refer to) an object. Such a pointer is called a null pointer.[1] Many implementations use a value of 0 (all bits zero) to represent the null pointer, as this is at the bottom of the address space of most CPUs" - http://en.wikipedia.org/wiki/Null_(computer_programming)

e ainda:

"In C and C++ programming, two null pointers are guaranteed to compare equal; ANSI C guarantees that any null pointer will be equal to 0 in a comparison with an integer type; furthermore the macro NULL is defined as a null pointer constant, that is value 0" - http://en.wikipedia.org/wiki/Pointer#The_null_pointer

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tomás Mendes    0
Tomás Mendes

Humm... obrigado pela confirmação.

Agora ia fazer uma pergunta mas entretanto cheguei à resposta (mas deixo aqui a pergunta e a resposta pode ser que seja útil para alguém):

Se "the macro NULL is defined as a null pointer constant, that is value 0", significa que algures existe algo assim "#define NULL 0" mas, o ponteiro pode não apontar para um inteiro. Como é que funcionaria neste caso?

Resposta: apesar de o ponteiro puder ou não apontar para um inteiro, um ponteiro é sempre um endereço, ou seja é sempre um valor númerico. Isto significa que mesmo que aponte para uma instância de uma qualquer estrutura, o valor do ponteiro vai ser numérico, ou seja, pode sempre ser igualado a zero.

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 a nossa Política de Privacidade