Virhe: Int:n viittausta ei voida poistaa C++:ssa

Virhe Int N Viittausta Ei Voida Poistaa C Ssa



Ohjelmointikielet tarvitsevat kirjastoja, toimintoja, syntaksia ja muita asioita työskennellessään niiden kanssa. Näin ollen on mahdollista, että koodimme sisältävät virheitä. Ohjelmoinnissa C++:lla on monia erilaisia ​​virhetyyppejä. Keskustelemme täällä virheestä 'int ei voida poistaa viittausta C++:ssa'. Tämä virhe ilmenee, kun yritämme käyttää viittauksenpoistooperaattoria “*” kokonaislukutyypin tietojen “int” kanssa, koska “int” on primitiivinen tietotyyppi. Emme voi poistaa 'int'-viittausta C++-ohjelmoinnissa. Tässä 'int ei voida poistaa C++' -virheestä ja sen ratkaisua tutkitaan perusteellisesti. Tässä oppaassa on joitain koodeja, joissa näemme, kuinka tämä virhe ilmenee ja miten tämän tyyppisiä virheitä käsitellään C++:ssa.

Esimerkki 1: Int







Tässä koodissa yritämme poistaa 'int'-viittauksen C++:ssa. Nyt sisällytämme yksinkertaisesti 'iostream'-otsikkotiedoston käyttääksemme määritettyjä toimintoja. Tämän alla käytämme 'nimiavaruutta std' ja kutsumme 'main()'-menetelmää tässä. Sitten määritämme muuttujan 'my_num' tietotyypillä 'int' ja annamme tälle muuttujalle '99'.



Nyt määritämme 'int'-tietotyypin 'my_value' ja alustamme sen '*my_num':lla, mikä tarkoittaa, että yritämme viitata 'my_num'-muuttujaan, joka on 'int'-tietotyyppiä. Virhe syntyy tälle riville käännösten aikana, koska emme voi muuttaa 'int' -viittausta. Haluamme näyttää arvon, jonka saamme int-viittauksen poistamisen jälkeen, joten asetamme 'cout', johon lisäsimme 'my_value'-muuttujan.



Koodi 1:





#include
käyttäen nimiavaruutta std;
int main ( ) {
int my_num = 99 ;
int my_value = * my_num;
cout << 'Arvo, jonka saamme poistamalla in-viittauksen, on: << my_value << endl;
palata 0 ;
}

Lähtö:



Tässä saatamme huomata, että arvoa ei näytetä ja tapahtuu virhe, joka sanoo, että unaarisen '*'-argumentin tyyppi on virheellinen. Tämä tarkoittaa, että emme voi poistaa 'int' -viittausta C++:ssa.

Ratkaisu 1: Ilman viittausten poistamista

Täällä saamme kokonaisluvun arvon suoraan ilman viittausta. Tuomme 'iostream'-otsikkotiedoston, koska joitakin funktiomääritelmiä on olemassa. Sitten kirjoitamme 'nimiavaruuden std' yhdessä 'using'-avainsanan kanssa ja kutsumme sitten 'main()'-menetelmää tähän. Nyt alustamme 'int' -tietotyypin 'my_num' -muuttujan arvolla '99'.

Sitten alustamme toisen muuttujan nimellä 'my_value' ja annamme sille 'my_num'-muuttujan, joka sisältää kokonaisluvun. Tämän jälkeen saamme tämän kokonaisluvun suoraan ilman viittausta laittamalla 'my_value' kohtaan 'cout'. Tämä saa ja näyttää kokonaisluvun arvon.

Koodi 1:

#include
käyttäen nimiavaruutta std;
int main ( ) {
int my_num = 99 ;
int oma_arvo = oma_numero;
cout << 'Arvo, jonka saamme ilman int-viittauksen poistamista, on: << my_value << endl;
palata 0 ;
}

Lähtö:

Tässä esitetään kokonaislukuarvo, jonka saamme ilman viittausta C++-koodissamme. Pääsemme suoraan tähän kokonaislukuarvoon ja näytämme sen.

Ratkaisu 2: Poistamalla osoittimen viittaukset

'iostream'-otsikkotiedosto sisältää tiettyjä funktiomääritelmiä; toimme ne maahan. Seuraavaksi suoritamme 'main()'-funktion täällä kirjoittamalla 'namespace std' ja 'using'-avainsanan. Tietotyypin 'int' muuttuja 'my_num' on nyt alustettu arvolla '99'.

Tämän jälkeen alustamme 'my_ptr'-osoittimen ja määritämme 'my_num'-muuttujan osoitteen tälle osoittimelle. Tämän alla poistamme osoittimen viittauksen ja määritämme tämän kautta saamamme arvon 'my_value'-muuttujalle, kun alustimme 'my_value'-arvon '*my_ptr' -muuttujalla. Nyt asetamme 'cout', jossa välitämme 'my_value'-muuttujan näyttääksesi kokonaislukuarvon, jonka saamme osoittimen viittauksen poistamisen kautta.

Koodi 2:

#include
käyttäen nimiavaruutta std;
int main ( ) {
int my_num = 99 ;
int * my_ptr = & minun_numero;
int my_value = * my_ptr;
cout << 'Int:n arvo, jonka saamme poistamalla viittauksen osoittimeen, on: << my_value << endl;
palata 0 ;
}

Lähtö:

Kokonaisluku, jonka saamme koodissamme olevan osoittimen viittauksen poistamisen jälkeen, näytetään nyt tässä. Joten tämä on oikea tapa soveltaa viittausta C++:ssa.

Esimerkki 2: Int

Yritetään poistaa viittaus 'int':ään C++:ssa tässä koodissa. Käyttääksemme 'iostreamissa' määritettyjä toimintoja, meidän on vain sisällytettävä 'iostream'-otsikkotiedosto. Tässä käytämme 'nimiavaruutta std' ja kutsumme 'main()'-funktiota. Seuraavaksi luomme 'a'-muuttujan ja annamme sille 'int'-tietotyypin sekä arvon '75'.

Tämän alle luomme osoittimen nimeltä 'newPointer' ja annamme tälle osoittimelle 'a'-muuttujan osoitteen '&':n avulla. Sitten alustamme alla olevan 'num'-muuttujan '*a':lla, mikä osoittaa, että yritämme poistaa viittauksen 'a'-muuttujaan, joka on tietotyyppiä 'int'. Koska emme voi poistaa viittausta 'int', tälle riville syntyy nyt käännöksen aikana virhe. Tämän jälkeen hyödynnetään myös 'cout', johon lisäämme 'num'-muuttujan.

Koodi 2:

#include
käyttäen nimiavaruutta std;
int main ( ) {
int a = 75 ;
int * uusiosoitin = & a;
int numero = * a;
cout << 'Int:n viittauksen poistamisen arvo on: ' << yhdellä << endl;
palata 0 ;
}

Lähtö:

Täällä voimme nähdä, että arvoa ei näytetä, ja näkyviin tulee virheilmoitus, jossa ilmoitetaan 'virheellinen unary-tyyppiparametri*'. Tämä osoittaa, että 'int' ei voi poistaa viittausta C++:ssa.

Ratkaisu 1: Ilman viittausten poistamista

Meidän ei tarvitse poistaa viittausta saadaksemme kokonaisluvun arvon välittömästi. Tuomme sen, koska 'iostream'-otsikkotiedosto sisältää tiettyjä funktiomääritelmiä. Main()-funktiota vedetään sitten, kun avainsanat 'using' ja 'namespace std' on syötetty. Tietotyypin 'int' muuttuja 'a' alustetaan nyt arvolla '75'. Myöhemmin lisäämme 'a' 'cout'-kenttään saadaksemme tämän kokonaisluvun välittömästi ilman viittausta. Tämä hakee kokonaisluvun arvon ja näyttää sen tässä.

Koodi 1:

#include
käyttäen nimiavaruutta std;
int main ( ) {
int a = 75 ;
cout << 'Arvo, jonka saamme ilman viittausten poistamista, on: << a << endl;
palata 0 ;
}

Lähtö:

Tässä esitetään kokonaislukuarvo, joka saadaan C++-koodistamme ilman viittausta. Tämä kokonaislukuarvo on heti käytettävissä ja näkyy tässä.

Ratkaisu 2:

Tuomme 'iostream'-otsikkotiedoston, joka sisältää joitain funktiomääritelmiä. Kirjoita tähän 'namespace std' ja 'using'-avainsana ennen 'main()'-funktion suorittamista. Arvo '75' on määritetty 'a'-muuttujalle.

Seuraavaksi julistamme osoittimen nimeltä 'mypointer' ja alustamme sen 'a'-muuttujan osoitteella. Tämän alapuolella poistamme osoittimen viittauksen ja määritämme tästä saamamme arvon 'result'-muuttujalle, kun alustamme 'result'-merkinnän '*mypointerilla'. Kun osoittimen viittaus on poistettu, asetamme 'cout'-komennon ja välitämme 'result'-muuttujan näyttääksesi kokonaisluvun.

Koodi 2:

#include
käyttäen nimiavaruutta std;
int main ( ) {
int a = 75 ;
int * mypointer = & a;
int tulos = * mypointer;
cout << 'Arvo, jonka saamme osoittimen viittauksen poistamisesta, on: << tulos << endl;
palata 0 ;
}

Lähtö:

Tämä on oikea tekniikka käyttää viittausta C++:ssa. Se muodostaa kokonaisluvun arvon, jonka saimme osoittimen viittauksen poistamisen jälkeen sen sijaan, että olisimme poistanut viittauksen 'int' -osoitteeseen.

Johtopäätös

Selvitimme, että kun yritämme saada arvon poistamalla viittauksen 'int':hen C++:ssa, tapahtuu 'virheellinen tyyppiparametri unaariseen '*', jossa on int' -virhe, mikä tarkoittaa, että 'int ei voida poistaa viittausta C++:ssa'. Selvitimme myös tämän virheen ratkaisun. Käytimme koodia, jossa virheet tapahtuivat, ja koodeja, joissa olemme tarjonneet ratkaisun kyseiseen virheeseen tässä oppaassa.