Pointeur vs poignées en c

Pointeur vs poignées en c
Quand il s'agit de programmation en C, pointeurs et poignées sont deux concepts essentiels dans la gestion de la mémoire et des structures de données, mais ils sont souvent confus ou utilisés de manière interchangeable. En programmation C, un gérer est une référence à un objet en mémoire, tandis qu'un aiguille est une variable qui se voit attribuer à l'adresse d'une autre variable. Les deux sont utilisés pour référencer et manipuler les adresses de mémoire de différentes manières.

Dans cet article, nous verrons si ces termes sont utilisés pour transmettre des choses distinctes.

Qu'est-ce qu'un pointeur en C?

Pointeurs stocker l'adresse mémoire de toute autre variable. UN aiguille est fabriqué en définissant une variable du type de pointeur et en utilisant le '&'opérateur pour lui attribuer l'adresse d'une autre variable. Pointeurs sont utilisés pour accéder et modifier indirectement les données via des adresses mémoire. Pointeurs peut être utilisé pour transférer des informations entre les fonctions et allouer la mémoire à la volée.

#inclure
int main()

int * point_c, c;
c = 10;
printf ("Adresse de C:% p \ n", & c);
printf ("valeur de c:% d \ n \ n", c);
Point_c = & c;
printf ("Adresse du pointeur C:% p \ n", point_c);
printf ("Contenu du pointeur C:% d \ n \ n", * point_c);
C = 39;
printf ("Adresse du pointeur C:% p \ n", point_c);
printf ("Contenu du pointeur C:% d \ n \ n", * point_c);
* point_c = 5;
printf ("Adresse de C:% p \ n", & c);
printf ("valeur de c:% d \ n \ n", c);
retour 0;

Dans le code ci-dessus, un aiguille variable point_c de type int et une variable entière normale C, et C est initialisé pour dix et l'adresse de C est attribuée au pointeur point_c. Après cela, la valeur de c est changé en 39, mais le point_c se voit ensuite une valeur différente qui est 5, donc quand la valeur de c est imprimé, il modifie la valeur à l'emplacement de la mémoire pointé par le point_c pour 5.

Sortir

Quelles sont les poignées en C?

Poignées sont des structures de données génériques qui stockent des références à la mémoire allouée dynamiquement. Poignées sont utilisés pour abstraire et gérer les ressources en C en fournissant un niveau d'indirection entre l'application et la ressource. UN gérer est créé en allouant la mémoire à la ressource et en renvoyant un pointeur à la mémoire allouée. Les chaînes et les tableaux sont des exemples de structures de données compliquées qui peuvent être gérées via poignées.

Différence entre les pointeurs et les poignées en c

Voici quelques-unes des principales différences entre pointeurs et poignées en c.

1: Référence directe à l'emplacement de la mémoire

L'une des principales différences entre pointeurs et poignées est-ce pointeurs référence directement un emplacement de mémoire, tandis que poignées fournir une abstraction d'une ressource. Pointeurs sont des constructions de bas niveau qui exposent les détails de la gestion de la mémoire, tandis que poignées sont des constructions de haut niveau qui cachent les détails de la gestion des ressources. Pointeurs sont plus adaptés aux tâches de programmation de bas niveau telles que la programmation système, tandis que poignées sont plus adaptés aux tâches de programmation au niveau de l'application telles que la programmation GUI.

2: Sécurité

Les adresses mémoire sont accessibles directement via pointeurs. Cela signifie que les données peuvent être stockées et accédés plus efficacement, en particulier avec de grands ensembles de données. Pointeurs offrir également une flexibilité dans la programmation, car ils peuvent être utilisés dans une grande variété d'applications. Mais dans ce cas, les poignées ont un point de sécurité plus, car ils garantissent que le programme n'accède pas directement aux emplacements de mémoire.

3: Efficacité

Poignées peut être moins efficace que pointeurs, car ils nécessitent une mémoire et une puissance de traitement supplémentaires pour gérer. Ils peuvent également être limités par le langage de programmation, car tous les langages ne prennent pas en charge poignées.

4: Comportement de gestion de la mémoire

Pointeurs nécessitent une gestion manuelle de la mémoire à l'aide de fonctions telles que malloc () et free (). Pointeurs Peut être dangereux lorsqu'ils ne sont pas gérés correctement, entraînant des fuites de mémoire, des références de mémoire non valides et des défauts de segmentation. Poignées, D'un autre côté, fournissez une gestion automatique de la mémoire à l'aide de fonctions telles que le comptage de référence ou la collecte des ordures. Poignées sont plus robustes et plus sûrs, garantissant que les ressources sont toujours correctement gérées.

Conclusion

Pointeurs et poignées sont deux concepts essentiels en programmation C qui servent des fins différentes. Pointeurs sont des constructions de bas niveau qui font directement référence aux emplacements de mémoire, tandis que poignées fournir une abstraction d'une ressource. Pointeurs nécessitent une gestion manuelle de la mémoire, tandis que poignées Fournir une gestion automatique de la mémoire. Pointeurs sont plus adaptés aux tâches de programmation système de bas niveau, tandis que poignées sont plus adaptés aux tâches de programmation au niveau de l'application. Lorsqu'il est utilisé de manière appropriée, les deux pointeurs et poignées sont efficaces dans la programmation C.