1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

NULL

Discussão em 'Programação' iniciada por Tolo19, 25 de Dezembro de 2012. (Respostas: 16; Visualizações: 888)

  1. Boas!

    Alguém me pode dizer porque que isto da erro?
    Feliz Natal!!

    Código:
    typedef struct{ 
       long num;
        
    }Pessoa;
    
    
    int main(int argc, char** argv) {
    
    
        Pessoa pessoas[10];
        Pessoa *pessoa;
        pessoa=NULL;
        
        
        pessoas[0]=*pessoa;
        
        
        
        return (EXIT_SUCCESS);
    }
     
  2. manelis

    manelis Power Member

    Penso que é só tirar o * do pessoas[0] = pessoa;
     
  3. tambem ja fiz isso e deu me este erro main.c:24: error: incompatible types in assignment
     
  4. ixjf

    ixjf Power Member

    Esse código nem faz qualquer sentido. O que é que tu queres fazer?
     
  5. quero colocar uma posicao do vector a NULL
     
  6. manelis

    manelis Power Member

    então faz simplesmente:


    int main(int argc, char** argv) {
    Pessoa pessoas[10];
    pessoas[0]= null;
    return (EXIT_SUCCESS);
    }

    E tenta usar nomes menos redundantes, isto assim é uma confusão.
     
  7. tambem ja fiz isso e deu me este erro main.c:24: error: incompatible types in assignment
    Como era só um exemplo não liguei muito aos nomes
     
  8. ixjf

    ixjf Power Member

    0 é NULL em C++ portanto penso que é isto que queres.
     
  9. manelis

    manelis Power Member

    Não mostraste aquic 24 linhas... Convém dares mais algum contexto, diria que está mal noutro sitio.
     
  10. ixjf

    ixjf Power Member

    @manelis, tu não podes simplesmente definir pessoas[0] como NULL porque pessoas[0] é um objeto, não um ponteiro.
     
  11. manelis

    manelis Power Member

    Ah, tens razão, já não olho para C há uns tempos :/

    Seria Pessoa* pessoas[10]; então, é isso?
     
  12. ixjf

    ixjf Power Member

    O quê? Para definir o objecto como NULL? Olha o que eu postei acima:

    Estou a assumir que esse código é C++ e que 0 equivale a NULL ( como acontece em C++ ).
     
  13. ok obrigado, já agora se eu quiser eliminar todos os elementos do vector utilizo o memset ou existe outra maneira mais correcta
     
  14. ixjf

    ixjf Power Member

    Se quiseres eliminar todos, aloca o vector dinamicamente usando new e usa delete para apagá-lo.

    Exemplo:

     
  15. eu estou a programar em c não em c++, eu acho que não é possível fazer new em c
     
  16. ixjf

    ixjf Power Member

    Então usa malloc e free.

     
    Última edição: 26 de Dezembro de 2012
  17. manelis

    manelis Power Member

    Não, pa fazer um vector de ponteiros para Pessoa e colocar o primeiro a null. Tava a assumir que fosse C btw, o user não disse o que era.
     

Partilhar esta Página