Förståelse av Void-Pekare
När du först såg void, syftade det på funktioner som inte returnerar något. Du kan inte skapa en variabel av typen void, men du kan deklarera en void*-pekare som lagrar adressen till vilken datatyp som helst.
Om du har arbetat igenom pekarövningarna i avsnittet vet du att alla pekare upptar 8 byte. En void*-pekare är inget undantag.
En void*-pekare är inte bunden till någon specifik datatyp. Denna flexibilitet gör att du kan lagra adressen till vilken datatyp som helst i den. Det finns dock en begränsning: du kan inte dereferera en void*-pekare.
Denna begränsning beror på samma anledning som att du inte kan deklarera variabler av typen void. Utför en explicit typomvandling!
Main.c
1234567891011121314151617181920#include <stdio.h> int main() { char c = 'F'; int i = 100; double d = 3.15; void* pV; pV = &c; printf("%c \n", *((char*)pV)); pV = &i; printf("%d \n", *((int*)pV)); pV = &d; printf("%.2f \n", *((double*)pV)); return 0; }
Gratulerar till att ha slutfört grunderna i C-programmering! För att gå vidare, utforska ämnen som makron, sorteringsalgoritmer och datastrukturer. Att lära dig en Linux-distribution kommer också att hjälpa dig att utvecklas som en skicklig C-programmerare.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain why you can't dereference a void pointer?
What are some common uses for void pointers in C?
Can you give examples of how to cast a void pointer to another type?
Awesome!
Completion rate improved to 2.63
Förståelse av Void-Pekare
Svep för att visa menyn
När du först såg void, syftade det på funktioner som inte returnerar något. Du kan inte skapa en variabel av typen void, men du kan deklarera en void*-pekare som lagrar adressen till vilken datatyp som helst.
Om du har arbetat igenom pekarövningarna i avsnittet vet du att alla pekare upptar 8 byte. En void*-pekare är inget undantag.
En void*-pekare är inte bunden till någon specifik datatyp. Denna flexibilitet gör att du kan lagra adressen till vilken datatyp som helst i den. Det finns dock en begränsning: du kan inte dereferera en void*-pekare.
Denna begränsning beror på samma anledning som att du inte kan deklarera variabler av typen void. Utför en explicit typomvandling!
Main.c
1234567891011121314151617181920#include <stdio.h> int main() { char c = 'F'; int i = 100; double d = 3.15; void* pV; pV = &c; printf("%c \n", *((char*)pV)); pV = &i; printf("%d \n", *((int*)pV)); pV = &d; printf("%.2f \n", *((double*)pV)); return 0; }
Gratulerar till att ha slutfört grunderna i C-programmering! För att gå vidare, utforska ämnen som makron, sorteringsalgoritmer och datastrukturer. Att lära dig en Linux-distribution kommer också att hjälpa dig att utvecklas som en skicklig C-programmerare.
Tack för dina kommentarer!