2010-11-07 3 views
7

Possible en double:
What's the difference between a null pointer and a void pointer?Quelle est la différence entre un pointeur vide et un pointeur NULL?

Quelle est la différence entre un pointeur et d'annuler un pointeur NULL dans C? Ou sont-ils les mêmes?

+1

Exact duplicate de [Quelle est la différence entre un pointeur nul et un pointeur vide?] (Http://stackoverflow.com/questions/3581585/whats-the-difference-between-a-null-pointer-and-a-void -aiguille). S'il vous plaît utiliser la recherche avant de poster des questions. – qrdl

Répondre

7

void est un type de données. void* est juste un pointeur vers un type indéfini. Un void* peut être défini sur n'importe quel emplacement de mémoire. Un pointeur NULL est un pointeur quelconque défini sur NULL (0). Donc oui, ils sont différents, car un pointeur vide est un type de données, et un pointeur NULL fait référence à n'importe quel pointeur qui a la valeur NULL. Pointer to void est un pointeur vers un type non spécifié.

5

C'est à dire. Juste un pointeur. Il peut toujours être un pointeur valide, mais nous ne savons pas à quoi il renvoie (par exemple, une fonction peut prendre un pointeur vide comme paramètre, puis interpréter le type selon un paramètre différent)

NULL est un pointeur "vide". Non valide, peut être utilisé pour spécifier un pointeur sur rien/non défini. C'est une valeur alors que void est un type.

13

Dans C, il y a void, pointeur void et NULL pointeur.

  1. void est absence de Type. C'EST À DIRE. une fonction renvoyant un type void est une fonction qui ne renvoie rien. Pointeur: est un pointeur vers un emplacement de mémoire dont le type peut être n'importe quoi: une structure, un int, un flottant, vous le nommez.
  2. Un pointeur NULL est un pointeur vers l'emplacement 0x00, c'est-à-dire, aucun emplacement. Pointant à rien.

Exemples:

fonction void:

void printHello() 
{ 
    printf("Hello"); 
} 

pointeur void:

void *malloc(size_t si) 
{ 
    // malloc is a function that could return a pointer to anything 
} 

pointeur NULL:

char *s = NULL; 
// s pointer points to nowhere (nothing) 
Questions connexes