Void-Osoittimien Ymmärtäminen
Kun näit ensimmäisen kerran void-avainsanan, se viittasi funktioihin, jotka eivät palauta arvoa. Et voi luoda muuttujaa tyyppiä void, mutta voit määritellä void*-osoittimen, joka voi sisältää minkä tahansa tietotyypin osoitteen.
Jos olet käynyt läpi osoitinharjoitukset tässä osiossa, tiedät, että kaikki osoittimet vievät 8 tavua muistia. void*-osoitin ei ole poikkeus.
void*-osoitin ei ole sidottu mihinkään tiettyyn tietotyyppiin. Tämä joustavuus mahdollistaa minkä tahansa tietotyypin osoitteen tallentamisen siihen. Tässä on kuitenkin rajoitus: et voi dereferoida void*-osoitinta.
Tämä rajoitus johtuu samasta syystä, miksi et voi määritellä muuttujia tyypillä void. Suorita eksplisiittinen tyyppimuunnos!
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; }
Onnittelut C-ohjelmoinnin perusteiden suorittamisesta! Edistyäksesi edelleen, tutustu aiheisiin kuten makrot, lajittelualgoritmit ja tietorakenteet. Linux-jakelun opiskelu auttaa sinua myös kehittymään taitavaksi C-ohjelmoijaksi.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Void-Osoittimien Ymmärtäminen
Pyyhkäise näyttääksesi valikon
Kun näit ensimmäisen kerran void-avainsanan, se viittasi funktioihin, jotka eivät palauta arvoa. Et voi luoda muuttujaa tyyppiä void, mutta voit määritellä void*-osoittimen, joka voi sisältää minkä tahansa tietotyypin osoitteen.
Jos olet käynyt läpi osoitinharjoitukset tässä osiossa, tiedät, että kaikki osoittimet vievät 8 tavua muistia. void*-osoitin ei ole poikkeus.
void*-osoitin ei ole sidottu mihinkään tiettyyn tietotyyppiin. Tämä joustavuus mahdollistaa minkä tahansa tietotyypin osoitteen tallentamisen siihen. Tässä on kuitenkin rajoitus: et voi dereferoida void*-osoitinta.
Tämä rajoitus johtuu samasta syystä, miksi et voi määritellä muuttujia tyypillä void. Suorita eksplisiittinen tyyppimuunnos!
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; }
Onnittelut C-ohjelmoinnin perusteiden suorittamisesta! Edistyäksesi edelleen, tutustu aiheisiin kuten makrot, lajittelualgoritmit ja tietorakenteet. Linux-jakelun opiskelu auttaa sinua myös kehittymään taitavaksi C-ohjelmoijaksi.
Kiitos palautteestasi!