Klaida: Int negalima nurodinėti C++

Klaida Int Negalima Nurodineti C



Programavimo kalboms dirbant su jomis reikia bibliotekų, funkcijų, sintaksės ir kitų dalykų. Taigi yra tikimybė, kad mūsų koduose bus klaidų. Programavimas C++ turi daug skirtingų klaidų tipų. Čia aptarsime klaidą „int negali būti nurodytos C++“. Ši klaida atsiranda, kai bandome panaudoti nuorodos pašalinimo operatorių „*“ su sveikojo skaičiaus tipo duomenimis „int“, nes „int“ yra primityvus duomenų tipas. Negalime atšaukti nuorodos į „int“ programuodami C++. Čia klaida „int negali būti nurodyta C++“ ir jos sprendimas bus nuodugniai ištirtas. Kai kurie kodai yra pateikti šiame vadove, kuriame pamatysime, kaip atsiranda ši klaida ir kaip elgtis su tokio tipo klaidomis C++.

1 pavyzdys: Int







Šiame kode mes bandysime pašalinti „int“ nuorodą C++ kalboje. Dabar mes tiesiog įtraukiame „iostream“ antraštės failą, kad galėtume panaudoti apibrėžtas funkcijas. Po juo mes naudojame 'namespace std' ir čia iškviečiame 'main()' metodą. Tada deklaruojame kintamąjį „my_num“ su „int“ duomenų tipu ir šiam kintamajam priskiriame „99“.



Dabar deklaruojame „int“ duomenų tipo „my_value“ ir inicijuojame jį „*my_num“, o tai reiškia, kad bandome pašalinti „my_num“ kintamąjį, kuris yra „int“ duomenų tipo. Klaida sugeneruojama šioje eilutėje kompiliuojant, nes negalime nurodyti „int“. Norime parodyti reikšmę, kurią gauname panaikinę int nuorodą, todėl įdedame „cout“, į kurį įtraukėme kintamąjį „my_value“.



1 kodas:





#include
naudojant vardų erdvę std;
tarp pagrindinis ( ) {
int mano_numas = 99 ;
int mano_vertė = * mano_numas;
cout << „Vertė, kurią gauname panaikinę nuorodą į int yra: << mano_vertė << endl;
grąžinti 0 ;
}

Išvestis:



Čia galime pastebėti, kad nerodoma jokia reikšmė ir įvyksta klaida, kuri sako, kad yra netinkamo tipo argumentas „*“. Tai reiškia, kad negalime atšaukti nuorodos į „int“ C++.

1 sprendimas: be nuorodų panaikinimo

Čia mes gausime sveikojo skaičiaus vertę tiesiogiai be nuorodų. Importuojame „iostream“ antraštės failą, nes yra kai kurių funkcijų apibrėžimų. Tada įvedame „vardų erdvę std“ kartu su raktiniu žodžiu „using“ ir čia iškviečiame „main()“ metodą. Dabar inicijuojame „int“ duomenų tipo „my_num“ kintamąjį su „99“ reikšme.

Tada inicijuojame kitą kintamąjį pavadinimu „mano_vertė“ ir priskiriame jam kintamąjį „my_num“, kuriame yra sveikasis skaičius. Po to mes gauname šią sveikojo skaičiaus reikšmę tiesiogiai, nepanaikindami nuorodos, į „cout“ įdėdami „my_value“. Tai gauna ir parodo sveikojo skaičiaus reikšmę.

1 kodas:

#include
naudojant vardų erdvę std;
tarp pagrindinis ( ) {
int my_num = 99 ;
int mano_vertė = mano_skaičius;
cout << „Vertė, kurią gauname neatsižvelgdami į int, yra: << mano_vertė << endl;
grąžinti 0 ;
}

Išvestis:

Čia pateikiama sveikojo skaičiaus reikšmė, kurią gauname neatlikdami nuorodos į mūsų C++ kodą. Mes tiesiogiai pasiekiame šią sveikojo skaičiaus reikšmę ir rodome ją.

2 sprendimas: panaikindami žymeklio nuorodą

„iostream“ antraštės faile yra tam tikrų funkcijų apibrėžimų; mes juos importavome. Tada čia paleidžiame funkciją „main()“ įvedę „namespace std“ ir raktinį žodį „using“. Duomenų tipo „int“ kintamasis „my_num“ dabar inicijuojamas reikšme „99“.

Po to inicijuojame rodyklę „my_ptr“ ir šiam žymekliui priskiriame „my_num“ kintamojo adresą. Po juo panaikiname žymeklio nuorodą ir gautą reikšmę priskiriame kintamajam „my_value“, kai inicijavome „my_value“ su „*my_ptr“. Dabar įdedame „cout“, kuriame perduodame „my_value“ kintamąjį, kad būtų parodyta sveikojo skaičiaus reikšmė, kurią gauname panaikinę žymeklio nuorodą.

2 kodas:

#include
naudojant vardų sritį std;
tarp pagrindinis ( ) {
int mano_numas = 99 ;
tarpt * mano_ptr = & mano_numas;
int mano_vertė = * mano_ptr;
cout << „Int vertė, kurią gauname panaikindami žymeklio nuorodą, yra: << mano_vertė << endl;
grąžinti 0 ;
}

Išvestis:

Dabar čia rodoma sveikojo skaičiaus reikšmė, kurią gauname panaikinę žymeklio nuorodą mūsų kode. Taigi, tai yra teisingas būdas taikyti nuorodų panaikinimą C++.

2 pavyzdys: Int

Pabandykime atšaukti nuorodą į „int“ C++ šiame kode. Norėdami naudoti funkcijas, apibrėžtas „iostream“, tereikia įtraukti „iostream“ antraštės failą. Čia naudojame „vardų erdvę std“ ir iškviečiame funkciją „main()“. Tada sukuriame „a“ kintamąjį ir suteikiame jam „int“ duomenų tipą kartu su reikšme „75“.

Po juo sukuriame žymeklį pavadinimu „newPointer“ ir šiam žymekliui priskiriame „a“ kintamojo adresą naudodami „&“. Tada inicijuojame toliau esantį „num“ kintamąjį „*a“, o tai rodo, kad bandome pašalinti „a“ kintamąjį, kuris yra „int“ duomenų tipo. Kadangi negalime atšaukti nuorodos į „int“, kompiliavimo metu šioje eilutėje atsiranda klaida. Po to taip pat naudojame „cout“, kuriame pridedame „num“ kintamąjį.

2 kodas:

#include
naudojant vardų sritį std;
tarp pagrindinis ( ) {
int a = 75 ;
tarpt * newPointer = & a;
int skaičius = * a;
cout << 'Int nuorodos panaikinimo vertė yra: ' << ant vieno << endl;
grąžinti 0 ;
}

Išvestis:

Čia matome, kad nerodoma jokia reikšmė ir pasirodo klaidos pranešimas, nurodantis „netinkamas unary tipo parametras“*. Tai rodo, kad „int“ negalima atmesti nuorodos C++.

1 sprendimas: be nuorodų panaikinimo

Mums nereikės atsisakyti nuorodos, kad iš karto gautume sveikojo skaičiaus reikšmę. Mes jį importuojame, nes „iostream“ antraštės faile yra tam tikrų funkcijų apibrėžimų. Funkcija „main()“ iškviečiama įvedus raktinius žodžius „using“ ir „namespace std“. „Int“ duomenų tipo „a“ kintamasis dabar inicijuojamas reikšme „75“. Vėliau į „cout“ įterpiame „a“, kad gautume šią sveikojo skaičiaus reikšmę iš karto, neatšaukdami nuorodos. Tai nuskaito sveikojo skaičiaus reikšmę ir parodo ją čia.

1 kodas:

#include
naudojant vardų sritį std;
tarp pagrindinis ( ) {
int a = 75 ;
cout << „Vertė, kurią gauname neatlikdami nuorodų, yra: << a << endl;
grąžinti 0 ;
}

Išvestis:

Čia pateikiama sveikojo skaičiaus reikšmė, gauta iš mūsų C++ kodo be nuorodų panaikinimo. Ši sveikojo skaičiaus reikšmė yra iš karto pasiekiama ir rodoma čia.

2 sprendimas:

Importuojame „iostream“ antraštės failą, kuriame yra keletas funkcijų apibrėžimų. Prieš vykdydami funkciją „main ()“, čia įvedame „namespace std“ ir „using“ raktinį žodį. Vertė „75“ priskiriama „a“ kintamajam.

Tada paskelbiame žymeklį, vadinamą „mano rodyklė“, ir inicijuojame jį „a“ kintamojo adresu. Po juo panaikiname žymeklio nuorodą ir iš jo gautą reikšmę priskiriame kintamajam „result“, kai inicijuojame „rezultą“ naudodami „*mypointer“. Atšaukę žymeklio nuorodą, įdedame komandą „cout“ ir perduodame kintamąjį „result“, kad parodytume sveikojo skaičiaus reikšmę.

2 kodas:

#include
naudojant vardų sritį std;
tarp pagrindinis ( ) {
int a = 75 ;
tarpt * mano rodyklė = & a;
int rezultatas = * mano rodyklė;
cout << „Vertė, kurią gauname panaikinę žymeklio nuorodą, yra: << rezultatas << endl;
grąžinti 0 ;
}

Išvestis:

Tai yra tinkamas būdas taikyti nuorodų panaikinimą C++. Jis pateikia sveikojo skaičiaus reikšmę, kurią gavome panaikinę žymeklio nuorodą, o ne panaikinę nuorodą į „int“.

Išvada

Ištyrėme, kad kai bandysime gauti reikšmę panaikindami nuorodą į „int“ C++ kalboje, atsiras „neteisingas vienkartinio „*“ tipo parametras, turintis int“, o tai reiškia, kad „int negali būti atšauktas C++“. Taip pat paaiškinome šios klaidos sprendimą. Šiame vadove naudojome kodą, kuriame įvyko klaidos, ir kodus, kuriuose pateikėme tos klaidos sprendimą.