bonjour à tous,
je m'adresse à vous pour en savoir plus sur le type void.
A quoi sert-il?Dans quels cas l'utilise-t-on?
Peut-on faire de l'arithmetique des pointeurs sur un type void* ?
etc ...
Merci d'avance
Rod
bonjour à tous,
je m'adresse à vous pour en savoir plus sur le type void.
A quoi sert-il?Dans quels cas l'utilise-t-on?
Peut-on faire de l'arithmetique des pointeurs sur un type void* ?
etc ...
Merci d'avance
Rod
Un type void sert à pouvoir pointer sur n'importe quelle partie de la mémoire sans avoir besoin de savoir le type de structure présente à cet endroit.
En effet on peut faire de l'arithmétique sur des pointeur de type void*.
Ce n'est cependant pas très fréquent pour des applications de gestions par exemple ou les données doivent être structurées. Mais par exemple si tu developpes quelque de proche de du système d'exploitation alors là ce deviendra nécessaire.
Non, pas de manière standard. C'est une extension de gcc, par exemple.Envoyé par ze_key
Jamais fait de programmation générique ?Ce n'est cependant pas très fréquent pour des applications de gestions par exemple ou les données doivent être structurées. Mais par exemple si tu developpes quelque de proche de du système d'exploitation alors là ce deviendra nécessaire.
Dans une liste chainée, par exemple, un pointeur de type void permet d'attacher n'importe quel type de donnée.
Autre cas, dans un callback : pour récupérer le contexte de l'application.
Je n'ai pas compris, qu'est ce qui est une extension de gcc ?
Le fait de pouvoir additionner des adresses ???
Si c'est le cas comment faire pour programmer un offset ?
Oui c'est ca qu'il voulais dire je pense !Envoyé par ze_key
Le type void ne peut être soumis à des calculs arithmétiques et d'ailleurs il ne peut pas non plus être déréférencé !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
L'arithmétique des pointeurs de type void.Envoyé par ze_key
On ne sait pas additionner des adresses en C.Le fait de pouvoir additionner des adresses ???
On sait calculer une adresse à partir d'une adresse de base et d'un indice si l'adresse est typée.Si c'est le cas comment faire pour programmer un offset ?
Le langage C est défini par une norme. Celle ci dit que l'on ne peut pas faire d'arithmétique de pointeur avec un type void. Normal, on ne connait pas la taille de l'objet pointé).
Certaines implémentations du langage C, comme la suite GCC et son compilateur gcc, offrent une caractéristique hors norme (ou extension aux spécifications du langage), qui assimile un void * à un char * et autorise donc l'arithmétique des pointeurs (détails dans la doc de gcc). Ce n'est évidemment pas portable et ce genre de pratique est donc déconseillée. (Surtout qu'il suffit d'utiliser un pointeur local du bon type pour faire ce qu'on a çà faire...)
Partager