Mis on tühine* keeles C ja C++

Mis On Tuhine Keeles C Ja C



C ja C++ on kaks programmeerimiskeelt, mis sõltuvad suuresti mäluhalduse ja andmetega manipuleerimise näpunäidetest. Osutajad on muutujad, mis salvestavad mäluaadresse, mis võimaldavad programmidel pääseda juurde mällu salvestatud andmetele ja neid töödelda. Üks eritüüpi osuti on tühine osuti (tühine*) , tuntud ka kui a üldine osuti .

Mis on tühine osuti (tühine*)?

Tühjuse osuti, tuntud ka kui üldine osuti, on osuti, mis ei ole seotud ühegi konkreetse andmetüübiga, mistõttu sobib see mis tahes tüüpi andmetele osutamiseks. Teisisõnu, a tühine osuti võib osutada täisarvule, märgile, stringile või mis tahes muule andmetüübile. See paindlikkus muudab tühjad osutid võimsaks tööriistaks C ja C++ programmeerimisel.

Kursuse tühisuse deklaratsioon C ja C++ keeles

C ja C++ puhul on tühine osuti deklareeritakse järgmise süntaksi kaudu:







tühine * ptr ;

Tühiste osutite kasutamine C ja C++ keeles

Tühjad näpunäited C-s kasutatakse enamasti siis, kui muutuja andmetüüp pole teada või võib käitusajal muutuda. Need võimaldavad andmete salvestamiseks ja nendega manipuleerimiseks üldist viisi, ilma et oleks vaja teada nende konkreetset andmetüüpi. See on eriti kasulik, kui käsitlete funktsioone või andmestruktuurisid, mis suudavad käsitleda erinevat tüüpi andmeid.



Üks levinud kasutusala tühjad näpunäited on mälu eraldamise funktsioonides nagu malloc() mis tagastab tühja osuti punkti mäluplokki, mida saab kasutada mis tahes andmetüübi salvestamiseks. Programmeerija saab seejärel suunata tühikukursori sobivale andmetüübile, et pääseda juurde eraldatud mäluplokki salvestatud andmetele ja nendega manipuleerida.



Teine tühikute osutite kasutamine C-s on sisse lülitatud funktsiooni näpunäited , mis on muutujad, mis salvestavad funktsiooni mäluaadressi. Kehtetuid viiteid saab kasutada mis tahes funktsiooni mäluaadressi salvestamiseks, olenemata selle tagastustüübist või parameetrite loendist, mis võimaldab funktsiooniosuti kasutamisel suuremat paindlikkust.





Kasutamine tühjad näpunäited C++ keeles on peaaegu sarnane, kuid neid saab kasutada ka erinevate klasside objektide üldise liidese loomiseks. Sageli saavutatakse see virtuaalsete funktsioonide kasutamisega, mis võimaldavad erinevate klasside objekte ühtselt käsitleda. Lisaks pakub C++ rangemat tüübikontrolli kui C, mis tähendab, et kasutades tühjad näpunäited valesti võib põhjustada rohkem vigu ja vigu.

Punktid, mida tuleks kaaluda tühiste osutite kasutamisel C- ja C++-s

Siin on mõned punktid, mida peaksite kasutamise ajal arvesse võtma tühjad näpunäited keeles C ja C++.



1: C-s tühine* saab kasutada tagastusväärtuse ja funktsiooni parameetrina, kuid C++ puhul peab teil olema konkreetne andmetüüp kursor.

Näiteks:

C-s on kood toodud allpool:

#include

#include

tühine * lisa_numbrid ( int a , int b ) {

int * tulemus = malloc ( suurus ( int ) ) ;

* tulemus = a + b ;

tagasi ( tühine * ) tulemus ;

}

tühine print_tulemus ( tühine * tulemus ) {

int * ptr = ( int * ) tulemus ;

printf ( 'Tulemus on: %d \n ' , * ptr ) ;

tasuta ( ptr ) ;

}

int peamine ( ) {

int number1 = 5 , number2 = 7 ;

tühine * tulemus = lisa_numbrid ( number1 , number2 ) ;

print_tulemus ( tulemus ) ;

tagasi 0 ;

}

Ülaltoodud kood määratleb funktsiooni lisa_numbrid() mis tagastab a tühine* kursor kahe argumentidena edastatud täisarvu lisamise tulemusele. Funktsioon print_result() võtab a tühi* osuti ja prindib tulemuse välja. Funktsioonis main() kutsume välja lisa_numbrid() ja edastage saadud tulemus tühi* osuti juurde print_result() printimiseks.

C++ puhul on nõutav konkreetne andmetüüp.

#include

kasutades nimeruumi std ;

tühine printInt ( int * ühel ) {

cout << 'Täisarv on:' << * ühel << endl ;

}

int peamine ( ) {

int x = 10 ;

int * ptr = & x ;

printInt ( ptr ) ;

tagasi 0 ;

}

2: C-s saate teisendada tühja kursori muuks osutitüübiks kaudne konversioon. Kuid C++ puhul peate kasutama selgesõnaline teisendus teisendada tühine osuti mis tahes muule osutitüübile.

Siin on lihtne koodinäide nii C kui ka C++ jaoks, et illustreerida erinevust kaudne ja selgesõnaline teisendus kohta tühjad näpunäited teistele osutitüüpidele:

C-s kasutatakse järgmist koodi:

#include

tühine printChar ( tühine * ptk ) {

char c = * ( char * ) ptk ;

printf ( '%c \n ' , c ) ;

}

int peamine ( ) {

char c = 'a' ;

tühine * ptr = & c ;

printChar ( ptr ) ;

tagasi 0 ;

}

Ülaltoodud kood määratleb funktsiooni printChar mis võtab parameetrina tühikursori ja prindib sellesse mälukohta salvestatud märgi. Põhifunktsioonis char muutuja c on määratletud ja selle aadress salvestatakse tühikursorisse ptr. The printChar funktsioon kutsutakse seejärel välja tühine osuti 'ptr' argumendina. Tühjuse osuti on sõnaselgelt teisendatud char kursoriks 'printChar' funktsioon salvestatud väärtusele juurde pääsemiseks ja selle printimiseks 'c' .

C++ keeles on kood antud allpool:

#include

tühine printInt ( tühine * ühel ) {

int * ptr = static_cast < int *> ( ühel ) ;

std :: cout << * ptr << std :: endl ;

}

int peamine ( ) {

int x = 10 ;

tühine * ptr = & x ;

printInt ( ptr ) ;

tagasi 0 ;

}

Ülaltoodud kood määratleb funktsiooni printInt mis võtab parameetrina tühiku osuti num ja heidab selle täisarvulisele osutile, kasutades staatilise_ülekande operaator . Seejärel prindib funktsioon täisarvu väärtuse, millele valatud osuti osutas. Põhifunktsioonis on defineeritud täisarvuline muutuja x ja selle aadress salvestatakse a-sse tühine osuti ptr, mis seejärel edastatakse printInt funktsiooni. Programmi väljundiks on x väärtus, mis on 10.

Viimased Mõtted

The tühine Osutajad C ja C++ pakuvad tõhusat viisi andmetega manipuleerimiseks, ilma et oleks vaja teada nende konkreetset andmetüüpi. Need on kasulikud mälu jaotamiseks ja funktsiooninäitajateks, samuti C++ eri klasside objektide jaoks üldise liidese loomiseks. Siiski on oluline arvestada C ja C++ erinevustega nende kasutamisel tühjad näpunäited , näiteks vajadus konkreetsete andmetüüpide järele C++-s ja selgesõnalise teisendamise vajadus tühiste osutite ülekandmisel teistele osutitüüpidele. Nende punktide hoolikas kaalumine võib viia tõhusama ja tulemuslikuma kasutamiseni tühjad näpunäited programmeerimises.