Pogreška: Int se ne može dereferencirati u C++

Pogreska Int Se Ne Moze Dereferencirati U C



Programski jezici trebaju biblioteke, funkcije, sintaksu i druge stvari kada rade s njima. Dakle, postoji mogućnost da će naši kodovi sadržavati pogreške. Programiranje u C++ ima mnogo različitih vrsta pogrešaka. Ovdje ćemo raspravljati o pogrešci 'int can be dereferenced in C++'. Ova se pogreška pojavljuje kada pokušamo upotrijebiti operator dereferencije “*” s podacima tipa cijelog broja “int” jer je “int” primitivni tip podataka. Ne možemo dereferencirati 'int' u C++ programiranju. Ovdje će se pogreška 'int can be dereferenced in C++' temeljito istražiti. U ovom vodiču dani su neki kodovi u kojima ćemo vidjeti kako nastaje ova pogreška i kako se nositi s ovom vrstom pogreške u C++.

Primjer 1: Dereferenciranje Int







U ovom kodu pokušat ćemo dereferencirati 'int' u C++. Sada jednostavno uključujemo datoteku zaglavlja 'iostream' za korištenje definiranih funkcija. Ispod toga koristimo “namespace std” i ovdje pozivamo metodu “main()”. Zatim deklariramo varijablu “my_num” s tipom podataka “int” i toj varijabli dodijelimo “99”.



Sada deklariramo “my_value” tipa podataka “int” i inicijaliziramo ga s “*my_num” što znači da pokušavamo dereferencirati varijablu “my_num” koja je tipa podataka “int”. Pogreška se generira u ovom retku tijekom kompajliranja jer ne možemo dereferencirati 'int'. Želimo prikazati vrijednost koju dobijemo nakon dereferenciranja int, pa postavljamo “cout” u koji smo dodali varijablu “my_value”.



Kod 1:





#include
korištenje imenskog prostora std;
int glavni ( ) {
int moj_broj = 99 ;
int moja_vrijednost = * moj_broj;
cout << 'Vrijednost koju dobivamo dereferenciranjem int-a je: ' << moja_vrijednost << endl;
povratak 0 ;
}

Izlaz:



Ovdje bismo mogli primijetiti da nije prikazana vrijednost i da se pojavljuje pogreška koja kaže da postoji nevažeći argument tipa unarnog '*'. To znači da ne možemo dereferencirati 'int' u C++.

Rješenje 1: Bez dereferenciranja

Ovdje ćemo izravno dobiti vrijednost cijelog broja bez dereferenciranja. Uvozimo datoteku zaglavlja 'iostream' jer su prisutne neke definicije funkcija. Zatim upisujemo 'namespace std' zajedno s ključnom riječi 'using', a zatim ovdje pozivamo metodu 'main()'. Sada inicijaliziramo varijablu “my_num” tipa podataka “int” s vrijednošću “99”.

Zatim inicijaliziramo drugu varijablu s imenom “my_value” i dodjeljujemo joj varijablu “my_num” koja sadrži cijeli broj. Nakon toga, ovu cjelobrojnu vrijednost dobivamo izravno bez dereferenciranja stavljanjem “my_value” u “cout”. Ovo dobiva i prikazuje vrijednost cijelog broja.

Kod 1:

#include
korištenje imenskog prostora std;
int glavni ( ) {
int moj_broj = 99 ;
int moja_vrijednost = moj_broj;
cout << 'Vrijednost koju dobivamo bez dereferenciranja int-a je: ' << moja_vrijednost << endl;
povratak 0 ;
}

Izlaz:

Ovdje se prikazuje vrijednost cijelog broja koju dobivamo bez dereferenciranja u našem C++ kodu. Izravno pristupamo ovoj cjelobrojnoj vrijednosti i prikazujemo je.

Rješenje 2: Dereferenciranjem pokazivača

Datoteka zaglavlja 'iostream' sadrži određene definicije funkcija; uvezli smo ih. Zatim ovdje pokrećemo funkciju “main()” nakon što upišemo “namespace std” i ključnu riječ “using”. Varijabla 'my_num' tipa podataka 'int' sada je inicijalizirana s vrijednošću '99'.

Nakon toga, inicijaliziramo pokazivač “my_ptr” i dodjeljujemo adresu varijable “my_num” ovom pokazivaču. Ispod toga dereferenciramo pokazivač i dodjeljujemo vrijednost koju dobijemo kroz ovo varijabli 'my_value' dok smo inicijalizirali 'my_value' s '*my_ptr'. Sada postavljamo “cout” u koji prosljeđujemo varijablu “my_value” za prikaz cjelobrojne vrijednosti koju dobivamo dereferenciranjem pokazivača.

Kod 2:

#include
korištenje imenskog prostora std;
int glavni ( ) {
int moj_broj = 99 ;
int * moj_ptr = i moj_broj;
int moja_vrijednost = * moj_ptr;
cout << 'Vrijednost int koju dobivamo dereferenciranjem pokazivača je: ' << moja_vrijednost << endl;
povratak 0 ;
}

Izlaz:

Ovdje se sada prikazuje vrijednost cijelog broja koju dobijemo nakon dereferenciranja pokazivača u našem kodu. Dakle, ovo je ispravan način za primjenu dereferenciranja u C++.

Primjer 2: Dereferenciranje Int

Pokušajmo dereferencirati 'int' u C++ u ovom kodu. Da bismo koristili funkcije definirane u 'iostream', samo trebamo uključiti datoteku zaglavlja 'iostream'. Ovdje koristimo “namespace std” i pozivamo funkciju “main()”. Zatim stvaramo varijablu 'a' i dajemo joj tip podataka 'int' zajedno s vrijednošću '75'.

Ispod toga stvaramo pokazivač pod nazivom 'newPointer' i dodjeljujemo adresu varijable 'a' ovom pokazivaču uz pomoć '&'. Zatim inicijaliziramo varijablu 'num' u nastavku s '*a' što označava da pokušavamo dereferencirati varijablu 'a' koja je tipa podataka 'int'. Budući da ne možemo dereferencirati 'int', sada se proizvodi pogreška u ovom retku tijekom kompilacije. Nakon toga također koristimo 'cout' u koji dodajemo varijablu 'num'.

Kod 2:

#include
korištenje imenskog prostora std;
int glavni ( ) {
int a = 75 ;
int * noviPokazivač = i a;
int broj = * a;
cout << 'Vrijednost dereferenciranja int-a je: ' << na jedan << endl;
povratak 0 ;
}

Izlaz:

Ovdje možemo vidjeti da nema prikazane vrijednosti i pojavljuje se poruka o pogrešci u kojoj se navodi 'nevažeći parametar tipa unary'*”. Ovo znači da se 'int' ne može dereferencirati u C++.

Rješenje 1: Bez dereferenciranja

Nećemo morati dereferencirati da odmah dobijemo vrijednost cijelog broja. Uvozimo ga jer datoteka zaglavlja 'iostream' sadrži određene definicije funkcija. Zatim se poziva funkcija “main()” nakon što su unesene ključne riječi “using” i “namespace std”. Varijabla 'a' tipa podataka 'int' sada je inicijalizirana s vrijednošću '75'. Nakon toga, umećemo 'a' u 'cout' kako bismo odmah dobili ovu cjelobrojnu vrijednost bez dereferenciranja. Ovo dohvaća vrijednost cijelog broja i prikazuje je ovdje.

Kod 1:

#include
korištenje imenskog prostora std;
int glavni ( ) {
int a = 75 ;
cout << 'Vrijednost koju dobivamo bez dereferenciranja je: ' << a << endl;
povratak 0 ;
}

Izlaz:

Ovdje je prikazana vrijednost cijelog broja koja se dobiva iz našeg C++ koda bez dereferenciranja. Ova vrijednost cijelog broja je odmah dostupna i prikazana je ovdje.

Rješenje 2:

Uvozimo datoteku zaglavlja 'iostream' koja sadrži neke definicije funkcija. Ovdje upisujemo 'namespace std' i ključnu riječ 'using' prije izvršavanja funkcije 'main()'. Vrijednost “75” dodijeljena je varijabli “a”.

Zatim deklariramo pokazivač pod nazivom 'mypointer' i inicijaliziramo ga adresom varijable 'a'. Ispod toga, dereferenciramo pokazivač i dodjeljujemo vrijednost koju dobijemo iz ovoga varijabli 'result' dok inicijaliziramo 'rezultat' s '*mypointer'. Nakon dereferenciranja pokazivača, postavljamo naredbu 'cout' i prosljeđujemo varijablu 'rezultat' za prikaz vrijednosti cijelog broja.

Kod 2:

#include
korištenje imenskog prostora std;
int glavni ( ) {
int a = 75 ;
int * moj pokazivač = i a;
int rezultat = * moj pokazivač;
cout << 'Vrijednost koju dobivamo dereferenciranjem pokazivača je: ' << proizlaziti << endl;
povratak 0 ;
}

Izlaz:

Ovo je ispravna tehnika za primjenu dereferenciranja u C++. Renderira cjelobrojnu vrijednost koju smo dobili nakon dereferenciranja pokazivača umjesto dereferenciranja 'int'.

Zaključak

Istražili smo da će se, kada pokušamo dobiti vrijednost dereferenciranjem 'int' u C++, pojaviti pogreška 'nevažeći parametar tipa unarnog '*' koji ima int' što znači da se 'int ne može dereferencirati u C++'. Također smo objasnili rješenje ove pogreške. Koristili smo kôd u kojem su se pogreške pojavile i kodove u kojima smo dali rješenje te pogreške u ovom vodiču.