pointeurs sont l'un des plus puissant - et le plus difficile - caractéristiques du langage de programmation C . Lorsque l'on travaille avec des pointeurs , il est souvent nécessaire de convertir entre différents types de pointeurs. Parfois , il est possible de convertir directement de l'un à l'autre, mais souvent , surtout dans les programmes complexes, vous trouverez peut-être nécessaire de stocker un pointeur qui a été converti à partir d' un seul type , mais n'a pas encore été converti à un autre type de pointeur . Dans ce cas, vous aurez besoin d'utiliser un pointeur void , ce qui représente un pointeur sans type à tous. Choses que vous devez
compilateur C
C programme
Voir Plus Instructions
1
déclarer votre pointeur void . Pour rendre une variable globale ou locale, ou un champ dans une structure, écrire " void * p ; » sur une ligne vide à l'intérieur de la fonction ou de la structure associée, ou à l'extérieur de toutes les fonctions et les structures pour la rendre globale . Pour ajouter un argument pointeur de vide à une fonction, écrire " void * p" dans la liste des arguments de la fonction. Dans les deux cas , vous pouvez remplacer la lettre "p" avec un nom de variable de votre choix.
2
stocker une valeur dans la variable de pointeur nul. Si vous avez fait une variable locale ou globale , il suffit d'écrire "p = ( void * ) x ; " . Remplacez «x» par le nom du pointeur typé vous souhaitez convertir à un pointeur nul. Si vous avez fait un champ de structure , écrire " sp = ( void * ) x ; " . Remplacer " s " par le nom de la structure et "x " par le nom de l'aiguille . Si vous avez fait un argument de fonction , appeler la fonction comme ceci: " f ( (void *) x ) " . Remplacer " f " avec le nom de la fonction et "x" avec le nom du pointeur.
3
Pour lire la valeur du pointeur nul et le reconvertir en un pointeur typé , écrivez « x = (type *) p ; », où « x » est le pointeur typé , "p" est le pointeur nul et "Type" est le type original du pointeur vous avez stocké dans "p". Soyez prudent pour obtenir le type correct , parce que le compilateur C sera consciencieusement convertir le pointeur sur n'importe quel type que vous demandez, si vous avez raison ou non. Cela peut conduire à des bugs subtils qui sont difficiles à corriger.