Kas negalioja* C ir C++

Kas Negalioja C Ir C



C ir C++ yra dvi programavimo kalbos, kurios labai priklauso nuo atminties valdymo ir duomenų tvarkymo nuorodų. Rodyklės yra kintamieji, kuriuose saugomi atminties adresai, leidžiantys programoms pasiekti ir valdyti atmintyje saugomus duomenis. Vienas specialus rodyklės tipas yra tuščia rodyklė (tuščia*) , taip pat žinomas kaip a bendroji rodyklė .

Kas yra tuštumos rodyklė (tuščia*)?

Tuščioji rodyklė, taip pat žinoma kaip bendroji rodyklė, yra žymeklis, nesusietas su jokiu konkrečiu duomenų tipu, todėl jis tinkamas nukreipti į bet kokio tipo duomenis. Kitaip tariant, a tuščia rodyklė gali nurodyti sveikąjį skaičių, simbolį, eilutę ar bet kurį kitą duomenų tipą. Dėl šio lankstumo tuščiosios rodyklės yra galingas C ir C++ programavimo įrankis.

Tuščios rodyklės deklaracija C ir C++

C ir C++ kalbomis tuščia rodyklė yra deklaruojamas naudojant šią sintaksę:







tuštuma * ptr ;

Tuščiųjų rodyklių naudojimas C ir C++

Tuščios rodyklės C dažniausiai naudojami, kai kintamojo duomenų tipas nėra žinomas arba gali skirtis vykdymo metu. Jie leidžia bendrai saugoti ir valdyti duomenis, nežinant konkretaus duomenų tipo. Tai ypač naudinga dirbant su funkcijomis ar duomenų struktūromis, kurios gali apdoroti įvairių tipų duomenis.



Vienas dažnas naudojimas tuščios rodyklės yra atminties paskirstymo funkcijose, pvz malloc () kuris grąžina tuščią žymeklio tašką į atminties bloką, kuris gali būti naudojamas bet kokio tipo duomenims saugoti. Tada programuotojas gali nukreipti tuščiosios eigos žymeklį į atitinkamą duomenų tipą, kad galėtų pasiekti ir valdyti duomenis, saugomus paskirtame atminties bloke.



Kitas tuščiųjų rodyklių naudojimas C yra in funkcijų rodyklės , kurie yra kintamieji, kurie saugo funkcijos atminties adresą. Tuščios rodyklės gali būti naudojamos bet kurios funkcijos atminties adresui išsaugoti, neatsižvelgiant į jos grąžinimo tipą ar parametrų sąrašą, todėl funkcijos rodyklės naudojimas yra lankstesnis.





Panaudojimas tuščios rodyklės C++ yra beveik panašus, tačiau jie taip pat gali būti naudojami kuriant bendrą sąsają skirtingų klasių objektams. Tai dažnai pasiekiama naudojant virtualias funkcijas, kurios leidžia vienodai traktuoti skirtingų klasių objektus. Be to, C++ siūlo griežtesnį tipo tikrinimą nei C, o tai reiškia, kad naudojant tuščios rodyklės neteisingai gali atsirasti daugiau klaidų ir klaidų.

Į ką reikia atsižvelgti naudojant tuščiąsias rodykles C ir C++

Štai keletas punktų, į kuriuos turėtumėte atsižvelgti naudodamiesi tuščios rodyklės C ir C++ kalbomis.



1: C, tuštuma* gali būti naudojamas kaip grąžinimo reikšmė ir funkcijos parametras, tačiau C++ turi turėti konkretų duomenų tipą.

Pavyzdžiui:

C, kodas pateikiamas žemiau:

#include

#include

tuštuma * pridėti_skaičiai ( tarpt a , tarpt b ) {

tarpt * rezultatas = malloc ( dydis ( tarpt ) ) ;

* rezultatas = a + b ;

grąžinti ( tuštuma * ) rezultatas ;

}

tuštuma spausdinimo_rezultatas ( tuštuma * rezultatas ) {

tarpt * ptr = ( tarpt * ) rezultatas ;

printf ( 'Rezultatas yra: %d \n , * ptr ) ;

Laisvas ( ptr ) ;

}

tarpt pagrindinis ( ) {

tarpt skaičius1 = 5 , skaičius2 = 7 ;

tuštuma * rezultatas = pridėti_skaičiai ( skaičius1 , skaičius2 ) ;

spausdinimo_rezultatas ( rezultatas ) ;

grąžinti 0 ;

}

Aukščiau pateiktas kodas apibrėžia funkciją pridėti_skaičiai() kad grąžina a tuštuma* žymeklis į dviejų sveikųjų skaičių, pateiktų kaip argumentai, pridėjimo rezultatą. Funkcija print_result() paima a tuščias* rodyklė ir išspausdina rezultatą. Funkcijoje main() mes iškviečiame pridėti_skaičiai() ir perduoti gautą tuščias* rodyklė į print_result() spausdinimui.

C++ kalboje reikalingas konkretus duomenų tipas.

#include

naudojant vardų sritį std ;

tuštuma printInt ( tarpt * ant vieno ) {

cout << 'Sveikasis skaičius yra: ' << * ant vieno << endl ;

}

tarpt pagrindinis ( ) {

tarpt x = 10 ;

tarpt * ptr = & x ;

printInt ( ptr ) ;

grąžinti 0 ;

}

2: C kalboje galite konvertuoti tuščią žymeklį į kitą žymeklio tipą numanomas konvertavimas. Tačiau C++ turite naudoti aiškus konvertavimas konvertuoti tuščia rodyklė į bet kurį kitą žymeklio tipą.

Štai paprastas kodo pavyzdys tiek C, tiek C++, kad parodytų skirtumą tarp numanomas ir aiškus konvertavimas apie tuščios rodyklės į kitus rodyklių tipus:

C naudojamas šis kodas:

#include

tuštuma printChar ( tuštuma * sk ) {

char c = * ( char * ) sk ;

printf ( '%c \n , c ) ;

}

tarpt pagrindinis ( ) {

char c = 'a' ;

tuštuma * ptr = & c ;

printChar ( ptr ) ;

grąžinti 0 ;

}

Aukščiau pateiktas kodas apibrėžia funkciją printChar kuris paima tuščią rodyklę kaip parametrą ir išspausdina toje atminties vietoje saugomą simbolį. Pagrindinėje funkcijoje char kintamasis c yra apibrėžtas ir jo adresas išsaugomas tuščioje rodyklėje ptr. The printChar tada funkcija iškviečiama su tuščia rodyklė 'ptr' kaip argumentas. Tuščia rodyklė yra aiškiai konvertuojama į char žymeklį „printChar“ funkcija, leidžianti pasiekti ir išspausdinti saugomą reikšmę 'c' .

C++ kalboje kodas pateikiamas žemiau:

#include

tuštuma printInt ( tuštuma * ant vieno ) {

tarpt * ptr = statinis_perdavimas < tarpt *> ( ant vieno ) ;

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

}

tarpt pagrindinis ( ) {

tarpt x = 10 ;

tuštuma * ptr = & x ;

printInt ( ptr ) ;

grąžinti 0 ;

}

Aukščiau pateiktas kodas apibrėžia funkciją printInt kuris paima tuščią rodyklės skaičių kaip parametrą ir perkelia jį į sveikojo skaičiaus žymeklį, naudodamas „static_cast“ operatorius . Tada funkcija išspausdina sveikojo skaičiaus, į kurį nukreipta išmestas žymeklis, reikšmę. Pagrindinėje funkcijoje yra apibrėžtas sveikasis kintamasis x ir jo adresas saugomas a tuščia rodyklė ptr, kuri vėliau perduodama į printInt funkcija. Programos išvestis yra x reikšmė, kuri yra 10.

Paskutinės mintys

The tuštuma C ir C++ rodyklės yra galingas būdas manipuliuoti duomenimis, nereikia žinoti konkretaus duomenų tipo. Jie naudingi paskirstant atmintį ir funkcijų rodykles, taip pat kuriant bendrą sąsają skirtingų klasių objektams C++. Tačiau svarbu atsižvelgti į C ir C++ naudojimo skirtumus tuščios rodyklės , pvz., konkrečių duomenų tipų poreikis C++ ir aiškaus konvertavimo poreikis perduodant tuščias rodykles į kitus rodyklių tipus. Kruopštus šių punktų įvertinimas gali padėti efektyviau ir efektyviau naudoti tuščios rodyklės programavimo srityje.