Tomás Mendes Posted April 26, 2009 at 09:59 PM Report #259237 Posted April 26, 2009 at 09:59 PM 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
pedrosorio Posted April 26, 2009 at 10:01 PM Report #259238 Posted April 26, 2009 at 10:01 PM 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 Não respondo a dúvidas por mensagem.
Tomás Mendes Posted April 26, 2009 at 10:12 PM Author Report #259240 Posted April 26, 2009 at 10:12 PM 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.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now