Fel: Int kan inte avreferens i C++

Fel Int Kan Inte Avreferens I C



Programmeringsspråk behöver bibliotek, funktioner, syntax och andra saker när man arbetar med dem. Det finns alltså en chans att våra koder innehåller fel. Programmering i C++ har många olika typer av fel. Vi kommer att diskutera felet 'int kan inte avreferens i C++' här. Det här felet uppstår när vi försöker använda dereference-operatorn '*' med heltalstypens data 'int' eftersom 'int' är en primitiv datatyp. Vi kan inte avreferera 'int' i C++-programmering. Här kan felet 'int kan inte avreferens i C++' och dess lösning utforskas noggrant. Några koder ges i den här guiden där vi kommer att se hur detta fel uppstår och hur man hanterar denna typ av fel i C++.

Exempel 1: Avreferens Int







I den här koden kommer vi att försöka avreferera 'int' i C++. Nu inkluderar vi helt enkelt 'iostream'-huvudfilen för att använda de definierade funktionerna. Under detta använder vi 'namespace std' och anropar metoden 'main()' här. Sedan deklarerar vi variabeln 'my_num' med datatypen 'int' och tilldelar '99' till denna variabel.



Nu deklarerar vi 'mitt_värde' för datatypen 'int' och initierar den med '*my_num' vilket betyder att vi försöker avreferens variabeln 'mitt_num' som är av datatypen 'int'. Felet genereras på den här raden under kompilering eftersom vi inte kan referera till 'int'. Vi vill visa värdet som vi får efter att avleda int, så vi placerar 'cout' där vi lade till variabeln 'my_value'.



Kod 1:





#inkludera
använder namnutrymme std;
int main ( ) {
int mitt_num = 99 ;
int mitt_värde = * mitt_nummer;
cout << 'Värdet vi får genom att hänvisa till int är:' << mitt_värde << endl;
lämna tillbaka 0 ;
}

Produktion:



Här kan vi märka att inget värde visas och ett fel uppstår som säger att det finns ett ogiltigt typargument av unärt '*'. Detta betyder att vi inte kan avreferera 'int' i C++.

Lösning 1: Utan avreferensering

Här kommer vi att få heltalsvärdet direkt utan avledning. Vi importerar 'iostream'-huvudfilen eftersom vissa funktionsdefinitioner finns. Sedan skriver vi 'namespace std' tillsammans med nyckelordet 'using' och anropar sedan metoden 'main()' här. Nu initierar vi variabeln 'my_num' för datatypen 'int' med värdet '99'.

Sedan initialiserar vi en annan variabel med namnet 'my_value' och tilldelar den variabeln 'my_num' som innehåller heltalstalet. Efter detta får vi detta heltalsvärde direkt utan att avleda genom att placera 'my_value' i 'cout'. Detta hämtar och visar heltalsvärdet.

Kod 1:

#inkludera
använder namnutrymme std;
int main ( ) {
int mitt_num = 99 ;
int mitt_värde = mitt_nummer;
cout << 'Värdet vi får utan att hänvisa till int är:' << mitt_värde << endl;
lämna tillbaka 0 ;
}

Produktion:

Heltalsvärdet renderas här som vi får utan att avleda i vår C++-kod. Vi kommer direkt åt detta heltalsvärde och visar det.

Lösning 2: Genom att ta bort pekaren

'iostream'-huvudfilen innehåller vissa funktionsdefinitioner; vi importerade dem. Därefter kör vi funktionen 'main()' här efter att ha skrivit 'namespace std' och nyckelordet 'using'. Variabeln 'my_num' för datatypen 'int' initieras nu med värdet '99'.

Efter detta initierar vi en 'my_ptr'-pekare och tilldelar adressen för variabeln 'my_num' till denna pekare. Under detta avreferenser vi pekaren och tilldelar värdet som vi får genom detta till variabeln 'my_value' när vi initierade 'my_value' med '*my_ptr'. Nu placerar vi 'cout' där vi skickar variabeln 'my_value' för att visa heltalsvärdet som vi får genom att referera pekaren.

Kod 2:

#inkludera
använder namnutrymme std;
int main ( ) {
int mitt_num = 99 ;
int * min_ptr = & mitt_nummer;
int mitt_värde = * min_ptr;
cout << 'Värdet av int vi får med att avleda en pekare är:' << mitt_värde << endl;
lämna tillbaka 0 ;
}

Produktion:

Heltalsvärdet som vi får efter att pekaren i vår kod har avreferenserats visas nu här. Så det här är det korrekta sättet att tillämpa dereferencing i C++.

Exempel 2: Avreferens Int

Låt oss försöka avreferera 'int' i C++ i den här koden. För att använda funktionerna som är definierade i 'iostream' behöver vi bara inkludera 'iostream'-huvudfilen. Det är här vi använder 'namespace std' och anropar funktionen 'main()'. Därefter skapar vi variabeln 'a' och ger den datatypen 'int' tillsammans med värdet på '75'.

Under denna skapar vi en pekare som heter 'newPointer' och tilldelar adressen till variabeln 'a' till denna pekare med hjälp av '&'. Sedan initialiserar vi variabeln 'num' nedan med '*a' vilket indikerar att vi försöker avreferera variabeln 'a' som är av datatypen 'int'. Eftersom vi inte kan avreferera 'int', skapas nu ett fel på denna rad under kompileringen. Efter detta använder vi också 'cout' där vi lägger till variabeln 'num'.

Kod 2:

#include
använder namnutrymme std;
int main ( ) {
int a = 75 ;
int * newPointer = & a;
int nummer = * a;
cout << 'Värdet som hänvisningen till int är:' << på ett << endl;
lämna tillbaka 0 ;
}

Produktion:

Här kan vi se att det inte visas något värde och ett felmeddelande som anger en 'ogiltig typparameter av unary'*' visas. Detta indikerar att 'int' inte kan avreferens i C++.

Lösning 1: Utan avreferensering

Vi behöver inte ta bort referens för att få heltalsvärdet omedelbart. Vi importerar det eftersom 'iostream'-huvudfilen innehåller vissa funktionsdefinitioner. Funktionen 'main()' anropas sedan efter att nyckelorden 'using' och 'namespace std' har matats in. Variabeln 'a' för datatypen 'int' initieras nu med värdet '75'. Efteråt infogar vi 'a' i 'cout' för att erhålla detta heltalsvärde omedelbart utan att hänvisa. Detta hämtar heltalsvärdet och visar det här.

Kod 1:

#include
använder namnutrymme std;
int main ( ) {
int a = 75 ;
cout << 'Värdet vi får utan att hänvisa är:' << a << endl;
lämna tillbaka 0 ;
}

Produktion:

Heltalsvärdet som erhålls från vår C++-kod utan avledning presenteras här. Detta heltalsvärde är omedelbart tillgängligt och visas här.

Lösning 2:

Vi importerar rubrikfilen 'iostream' som innehåller några funktionsdefinitioner. Här skriver vi 'namespace std' och nyckelordet 'using' innan vi kör funktionen 'main()'. Värdet på '75' tilldelas variabeln 'a'.

Därefter deklarerar vi en pekare som heter 'mypointer' och initialiserar den med adressen till variabeln 'a'. Under detta avreferenser vi pekaren och tilldelar värdet som vi får från detta till variabeln 'resultat' när vi initierar 'resultatet' med '*mypointer'. Efter att ha hänvisat pekaren, placerar vi kommandot 'cout' och skickar variabeln 'resultat' för att visa heltalsvärdet.

Kod 2:

#include
använder namnutrymme std;
int main ( ) {
int a = 75 ;
int * mypointer = & a;
int resultat = * mypointer;
cout << 'Värdet vi får genom att referera pekaren är:' << resultat << endl;
lämna tillbaka 0 ;
}

Produktion:

Detta är den rätta tekniken för att tillämpa dereferencing i C++. Den återger det heltalsvärde som vi fick efter att pekaren avleddes istället för att avleda 'int'.

Slutsats

Vi undersökte att när vi försöker få värdet genom att avreferensa 'int' i C++, kommer den 'ogiltiga typparametern för unär '*' med int'-fel att uppstå, vilket betyder att 'int inte kan avreferens i C++'. Vi förklarade också lösningen på detta fel. Vi använde koden där felen uppstod och koderna där vi gav lösningen på det felet i den här guiden.