Chyba: Int nemožno dereferencovať v C++

Chyba Int Nemozno Dereferencovat V C



Programovacie jazyky potrebujú pri práci s nimi knižnice, funkcie, syntax a ďalšie veci. Existuje teda šanca, že naše kódy budú obsahovať chyby. Programovanie v C++ má veľa rôznych typov chýb. Tu budeme diskutovať o chybe „int nemožno dereferencovať v C++“. K tejto chybe dochádza, keď sa pokúšame použiť operátor dereferencie „*“ s údajmi typu „int“ celého čísla, pretože „int“ je primitívny typ údajov. Nemôžeme dereferencovať „int“ v programovaní v C++. Tu je chyba „int nemožno dereferencovať v C++“ a jej riešenie bude dôkladne preskúmané. Niektoré kódy sú uvedené v tejto príručke, v ktorej uvidíme, ako k tejto chybe dochádza a ako zvládnuť tento typ chyby v C++.

Príklad 1: Dereferencovanie Int







V tomto kóde sa pokúsime dereferencovať „int“ v C++. Teraz jednoducho zahrnieme hlavičkový súbor „iostream“, aby sme mohli využívať definované funkcie. Pod tým používame „namespace std“ a tu vyvoláme metódu „main()“. Potom deklarujeme premennú „my_num“ s dátovým typom „int“ a tejto premennej priradíme „99“.



Teraz deklarujeme „my_value“ dátového typu „int“ a inicializujeme ho „*my_num“, čo znamená, že sa snažíme dereferencovať premennú „my_num“, ktorá je dátového typu „int“. Chyba sa generuje na tomto riadku počas kompilácie, pretože nemôžeme dereferencovať „int“. Chceme zobraziť hodnotu, ktorú získame po dereferencovaní int, preto umiestnime „cout“, do ktorého sme pridali premennú „my_value“.



Kód 1:





#include
pomocou menného priestoru std;
int main ( ) {
int moje_číslo = 99 ;
int moja_hodnota = * moje_číslo;
cout << 'Hodnota, ktorú získame dereferencovaním int, je: ' << moja_hodnota << endl;
vrátiť 0 ;
}

Výkon:



Tu si môžeme všimnúť, že sa nezobrazuje žiadna hodnota a vyskytne sa chyba, ktorá hovorí, že existuje neplatný argument typu unárne „*“. To znamená, že nemôžeme dereferencovať „int“ v C++.

Riešenie 1: Bez dereferencovania

Tu dostaneme hodnotu celého čísla priamo bez dereferencovania. Importujeme hlavičkový súbor „iostream“, pretože sú k dispozícii niektoré definície funkcií. Potom napíšeme „namespace std“ spolu s kľúčovým slovom „using“ a potom tu zavoláme metódu „main()“. Teraz inicializujeme premennú „my_num“ dátového typu „int“ s hodnotou „99“.

Potom inicializujeme ďalšiu premennú s názvom „my_value“ a priradíme jej premennú „my_num“, ktorá obsahuje celé číslo. Potom získame túto celočíselnou hodnotu priamo bez dereferencovania umiestnením „my_value“ do „cout“. Tým sa získa a zobrazí celočíselná hodnota.

Kód 1:

#include
pomocou menného priestoru std;
int main ( ) {
int moje_číslo = 99 ;
int moja_hodnota = moje_číslo;
cout << 'Hodnota, ktorú získame bez dereferencovania int, je: ' << moja_hodnota << endl;
vrátiť 0 ;
}

Výkon:

Tu je vykreslená celočíselná hodnota, ktorú získame bez dereferencovania v našom kóde C++. K tejto celočíselnej hodnote priamo pristupujeme a zobrazujeme ju.

Riešenie 2: Dereferencovaním ukazovateľa

Hlavičkový súbor „iostream“ obsahuje určité definície funkcií; doviezli sme ich. Ďalej tu spustíme funkciu „main()“ po zadaní „namespace std“ a kľúčového slova „using“. Premenná „my_num“ dátového typu „int“ je teraz inicializovaná s hodnotou „99“.

Potom inicializujeme ukazovateľ „my_ptr“ a tomuto ukazovateľu priradíme adresu premennej „my_num“. Pod tým dereferencujeme ukazovateľ a priradíme hodnotu, ktorú tým získame, do premennej „my_value“, keď sme inicializovali „my_value“ pomocou „*my_ptr“. Teraz umiestnime „cout“, do ktorého prejdeme premennou „my_value“, aby sa zobrazila celočíselná hodnota, ktorú získame dereferencovaním ukazovateľa.

Kód 2:

#include
pomocou menného priestoru std;
int main ( ) {
int moje_číslo = 99 ;
int * my_ptr = & moje_číslo;
int moja_hodnota = * my_ptr;
cout << 'Hodnota int, ktorú získame dereferencovaním ukazovateľa, je: ' << moja_hodnota << endl;
vrátiť 0 ;
}

Výkon:

Teraz sa tu zobrazuje celočíselná hodnota, ktorú získame po dereferencovaní ukazovateľa v našom kóde. Toto je správny spôsob aplikácie dereferencovania v C++.

Príklad 2: Dereferencovanie Int

Pokúsme sa dereferencovať „int“ v C++ v tomto kóde. Ak chcete použiť funkcie, ktoré sú definované v „iostream“, stačí zahrnúť hlavičkový súbor „iostream“. Tu používame „namespace std“ a voláme funkciu „main()“. Ďalej vytvoríme premennú „a“ a priradíme jej dátový typ „int“ spolu s hodnotou „75“.

Pod tým vytvoríme ukazovateľ s názvom „newPointer“ a pomocou „&“ priradíme adresu premennej „a“ tomuto ukazovateľu. Potom inicializujeme premennú „num“ nižšie s „*a“, čo znamená, že sa pokúšame dereferencovať premennú „a“, ktorá je typu údajov „int“. Keďže nemôžeme dereferencovať „int“, počas kompilácie sa na tomto riadku vygeneruje chyba. Potom použijeme aj „cout“, do ktorého pridáme premennú „num“.

Kód 2:

#include
pomocou menného priestoru std;
int main ( ) {
int a = 75 ;
int * newPointer = & a;
int číslo = * a;
cout << 'Hodnota dereferencovania int je: ' << na jeden << endl;
vrátiť 0 ;
}

Výkon:

Tu vidíme, že sa nezobrazuje žiadna hodnota a zobrazí sa chybové hlásenie s uvedením „neplatný parameter typu unary“*“. To znamená, že „int“ nemožno v C++ dereferencovať.

Riešenie 1: Bez dereferencovania

Na okamžité získanie celočíselnej hodnoty nebudeme musieť dereferencovať. Importujeme ho, pretože hlavičkový súbor „iostream“ obsahuje určité definície funkcií. Funkcia „main()“ sa potom vyvolá po zadaní kľúčových slov „using“ a „namespace std“. Premenná „a“ dátového typu „int“ je teraz inicializovaná s hodnotou „75“. Potom vložíme „a“ do „cout“, aby sme túto celočíselnou hodnotu získali okamžite bez dereferencovania. Týmto sa získa celočíselná hodnota a zobrazí sa tu.

Kód 1:

#include
pomocou menného priestoru std;
int main ( ) {
int a = 75 ;
cout << 'Hodnota, ktorú získame bez dereferencovania, je:' << a << endl;
vrátiť 0 ;
}

Výkon:

Tu je uvedená celočíselná hodnota získaná z nášho kódu C++ bez dereferencovania. Táto celočíselná hodnota je okamžite dostupná a zobrazuje sa tu.

Riešenie 2:

Importujeme hlavičkový súbor „iostream“ obsahujúci niektoré definície funkcií. Tu zadáme „namespace std“ a kľúčové slovo „using“ pred spustením funkcie „main()“. Hodnota „75“ je priradená premennej „a“.

Ďalej deklarujeme ukazovateľ s názvom „mypointer“ a inicializujeme ho adresou premennej „a“. Pod tým dereferencujeme ukazovateľ a hodnotu, ktorú z neho dostaneme, priradíme premennej „výsledok“, keď inicializujeme „výsledok“ pomocou „*mypointer“. Po dereferencovaní ukazovateľa umiestnime príkaz „cout“ a odovzdame premennú „výsledok“, aby sa zobrazila celočíselná hodnota.

Kód 2:

#include
pomocou menného priestoru std;
int main ( ) {
int a = 75 ;
int * môj ukazovateľ = & a;
int vysledok = * môj ukazovateľ;
cout << 'Hodnota, ktorú získame dereferencovaním ukazovateľa, je: ' << výsledok << endl;
vrátiť 0 ;
}

Výkon:

Toto je správna technika na použitie dereferencovania v C++. Vykreslí celočíselnú hodnotu, ktorú sme získali po dereferencovaní ukazovateľa namiesto dereferencovania „int“.

Záver

Skúmali sme, že keď sa pokúsime získať hodnotu dereferencovaním „int“ v C++, objaví sa „neplatný parameter typu unárneho „*“ s int“, čo znamená, že „int nemožno dereferencovať v C++“. Vysvetlili sme aj riešenie tejto chyby. V tejto príručke sme použili kód, v ktorom sa vyskytli chyby, a kódy, v ktorých sme poskytli riešenie danej chyby.