Maison  >  Article  >  développement back-end  >  Quelle est la différence entre « void * » en C et C++ ?

Quelle est la différence entre « void * » en C et C++ ?

PHPz
PHPzavant
2023-09-02 13:17:02920parcourir

在C和C++中,“void *”有什么区别?

Dans cette section, nous verrons le pointeur de vide et Pointeur nul en C++. Ce sont tous deux des pointeurs vides, mais en C, un pointeur vide peut être En C++, nous ne pouvons lui attribuer aucun type de pointeur, mais en C++, nous devons le faire Conversion de type explicite pour l'affectation.

Dans l'exemple suivant, lorsque nous écrivons du code, nous pouvons exécuter ces lignes Le code est en C.

void *p;
int *int_ptr = p;

Cela fonctionne bien en C. Maintenant, si nous utilisons malloc() pour allouer de l'espace mémoire, nous Il est possible d’utiliser une conversion de type explicite, mais si ce n’est pas le cas, pas de problème. Le malloc() La fonction renvoie un pointeur nul.

int *int_ptr = malloc(sizeof(int) * 10);

Le pointeur void renvoyé ici est implicitement converti en un pointeur de type entier.

Maintenant, si nous voulons exécuter le même programme en C et C++, nous devons expliciter la conversion de type aiguille.

void *p;
int *int_ptr = (int *) p;
int *arr_ptr = (int *) malloc(sizeof(int) * 10);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer