Viga: Int ei saa C++-s viidata

Viga Int Ei Saa C S Viidata



Programmeerimiskeeled vajavad nendega töötamisel teeke, funktsioone, süntaksit ja muud. Seega on tõenäoline, et meie koodid sisaldavad vigu. Programmeerimisel C++ keeles on palju erinevat tüüpi vigu. Siin räägime veast 'Int ei saa C++-s viidata'. See tõrge ilmneb siis, kui proovime kasutada viiteoperaatorit “*” täisarvu tüüpi andmetega “int”, kuna “int” on primitiivne andmetüüp. Me ei saa C++ programmeerimisel viiteid „int”-le eemaldada. Siin on viga 'int ei saa C++ puhul viidata' ja selle lahendust uuritakse põhjalikult. Selles juhendis on toodud mõned koodid, milles näeme, kuidas see viga ilmneb ja kuidas seda tüüpi tõrkeid C++-s käsitleda.

Näide 1: Int







Selles koodis proovime C++ keeles 'int' viidata. Nüüd lisame määratletud funktsioonide kasutamiseks lihtsalt päisefaili 'iostream'. Selle all kasutame 'nimeruumi std' ja kutsume siin esile 'main()' meetodi. Seejärel deklareerime muutuja 'my_num' andmetüübiga 'int' ja määrame sellele muutujale '99'.



Nüüd deklareerime andmetüübi 'int' väärtuse 'my_value' ja lähtestame selle väärtusega '*my_num', mis tähendab, et proovime viidata muutujale 'minu_num', mis on andmetüübi 'int'. Viga genereeritakse sellel real kompileerimise ajal, kuna me ei saa viidata 'int'-le. Soovime kuvada väärtust, mille saame pärast int viitamise tühistamist, seega asetame 'cout', millesse lisasime muutuja 'my_value'.



Kood 1:





#include
kasutades nimeruumi std;
int main ( ) {
int minu_number = 99 ;
int minu_väärtus = * minu_number;
cout << 'Väärtus, mille saame int-i viitamise tühistamisel, on: << minu_väärtus << endl;
tagasi 0 ;
}

Väljund:



Siin võime märgata, et väärtust ei kuvata ja ilmneb tõrge, mis ütleb, et unaarse '*' tüüpi argument on kehtetu. See tähendab, et me ei saa C++ keeles 'int' viiteid tühistada.

Lahendus 1: ilma viitamiseta

Siin saame täisarvu väärtuse otse ilma viitamiseta. Impordime 'iostream' päisefaili, kuna mõned funktsioonide määratlused on olemas. Seejärel tippime 'nimeruumi std' koos märksõnaga 'kasutamine' ja seejärel kutsume siia meetodi 'main()'. Nüüd initsialiseerime andmetüübi 'int' muutuja 'my_num' väärtusega '99'.

Seejärel initsialiseerime teise muutuja nimega “my_value” ja omistame sellele muutujaga “my_num”, mis sisaldab täisarvu. Pärast seda saame selle täisarvulise väärtuse otse ilma viitamiseta, asetades 'minu_väärtuse' lahtrisse 'cout'. See hangib ja kuvab täisarvu väärtuse.

Kood 1:

#include
kasutades nimeruumi std;
int main ( ) {
int minu_number = 99 ;
int minu_väärtus = minu_arv;
cout << 'Väärtus, mille saame ilma int-le viitamata, on: << minu_väärtus << endl;
tagasi 0 ;
}

Väljund:

Siin renderdatakse täisarv, mille saame ilma C++ koodis viitamata. Me pääseme sellele täisarvu väärtusele otse juurde ja kuvame selle.

Lahendus 2: kursori viitamise tühistamine

Päisefail 'iostream' sisaldab teatud funktsioonide määratlusi; me importisime need. Järgmisena käivitame siin funktsiooni 'main()' pärast 'namespace std' ja märksõna 'using' sisestamist. Andmetüübi 'int' muutuja 'my_num' on nüüd lähtestatud väärtusega '99'.

Pärast seda initsialiseerime kursori 'my_ptr' ja määrame sellele osutile muutuja 'my_num' aadressi. Selle all eemaldame kursori viitamise ja määrame selle kaudu saadud väärtuse muutujale „my_value”, kui initsialiseerisime „my_value” väärtusega „*my_ptr”. Nüüd asetame 'cout', millesse edastame muutuja 'my_value', et kuvada täisarv, mille saame kursori viitamise teel.

Kood 2:

#include
kasutades nimeruumi std;
int main ( ) {
int minu_number = 99 ;
int * minu_ptr = & minu_number;
int minu_väärtus = * minu_ptr;
cout << 'Int väärtus, mille saame kursori viitamise tühistamisel, on: << minu_väärtus << endl;
tagasi 0 ;
}

Väljund:

Siin kuvatakse nüüd täisarv, mille saame pärast kursori viitamise tühistamist meie koodis. Niisiis, see on õige viis viitamise eemaldamiseks C++ keeles.

Näide 2: Int

Proovime selles koodis C++ keeles 'int' viidata. Funktsioonide kasutamiseks, mis on määratletud jaotises 'iostream', peame lihtsalt lisama päisefaili 'iostream'. Siin kasutame 'nimeruumi std' ja kutsume funktsiooni 'main()'. Järgmisena loome muutuja 'a' ja anname sellele andmetüübi 'int' koos väärtusega '75'.

Selle alla loome kursori nimega 'newPointer' ja määrame sellele kursorile 'a' muutuja aadressi '&' abil. Seejärel initsialiseerime alloleva muutuja 'num' tähega '*a', mis näitab, et proovime viidata muutujale 'a', mis on andmetüüpi 'int'. Kuna me ei saa 'int' viidet tühistada, tekib nüüd sellel real kompileerimise ajal viga. Pärast seda kasutame ka 'cout', millesse lisame muutuja 'num'.

Kood 2:

#include
kasutades nimeruumi std;
int main ( ) {
int a = 75 ;
int * uusPointer = & a;
int number = * a;
cout << 'Int viitamise väärtus on: ' << ühel << endl;
tagasi 0 ;
}

Väljund:

Siin näeme, et väärtust ei kuvata ja kuvatakse tõrketeade, mis ütleb, et unary parameeter on kehtetu*. See näitab, et 'int' ei saa C++ keeles viidata.

Lahendus 1: ilma viitamiseta

Täisarvu koheseks saamiseks ei pea me viiteid tühistama. Impordime selle, kuna 'iostream' päisefail sisaldab teatud funktsioonide määratlusi. Funktsioon 'main()' käivitatakse pärast märksõnade 'using' ja 'namespace std' sisestamist. Andmetüübi 'int' muutuja 'a' on nüüd lähtestatud väärtusega '75'. Seejärel sisestame tähe 'a' lahtrisse 'cout', et saada see täisarv kohe ilma viitamiseta. See otsib täisarvu väärtuse ja kuvab selle siin.

Kood 1:

#include
kasutades nimeruumi std;
int main ( ) {
int a = 75 ;
cout << 'Väärtus, mille saame ilma viitamiseta, on: << a << endl;
tagasi 0 ;
}

Väljund:

Siin on esitatud täisarv, mis saadakse meie C++-koodist ilma viitamiseta. See täisarv on kohe juurdepääsetav ja kuvatakse siin.

Lahendus 2:

Impordime päisefaili 'iostream', mis sisaldab mõningaid funktsioonide määratlusi. Siin sisestame enne funktsiooni „main()” täitmist „namespace std” ja „using” märksõna. Väärtus '75' on määratud muutujale 'a'.

Järgmisena deklareerime kursori nimega 'mypointer' ja lähtestame selle muutuja 'a' aadressiga. Selle all eemaldame kursori viitamise ja määrame sellest saadud väärtuse muutujale 'result', kui initsialiseerime 'result' väärtusega '*mypointer'. Pärast kursori viitamise tühistamist asetame käskluse 'cout' ja edastame täisarvu väärtuse kuvamiseks muutuja 'result'.

Kood 2:

#include
kasutades nimeruumi std;
int main ( ) {
int a = 75 ;
int * minu osuti = & a;
int tulemus = * minu osuti;
cout << 'Väärtus, mille me kursori viitamise tühistamisel saame, on: << tulemus << endl;
tagasi 0 ;
}

Väljund:

See on õige meetod viitamise eemaldamiseks C++ keeles. See esitab täisarvu väärtuse, mille saime pärast kursori viitamise tühistamist, selle asemel, et lahutada viite „int”.

Järeldus

Uurisime, et kui proovime saada väärtust, eemaldades C++-s 'int'-i, ilmneb viga 'int-i tüübi unaarse '*' parameeter, mis tähendab, et 'int ei saa C++-s viidata'. Selgitasime ka selle vea lahendust. Kasutasime selles juhendis koodi, milles vead ilmnesid, ja koode, milles pakkusime selle vea lahenduse.