Eroare: Int nu poate fi dereferențiat în C++

Eroare Int Nu Poate Fi Dereferentiat In C



Limbajele de programare au nevoie de biblioteci, funcții, sintaxă și alte lucruri atunci când lucrează cu ele. Astfel, există șansa ca codurile noastre să conțină erori. Programarea în C++ are multe tipuri distincte de erori. Vom discuta despre eroarea „int nu poate fi dereferențiat în C++” aici. Această eroare apare atunci când încercăm să folosim operatorul de dereferință „*” cu datele de tip întreg „int” deoarece „int” este un tip de date primitiv. Nu putem dereferința „int” în programarea C++. Aici, eroarea „int nu poate fi dereferențiat în C++” și soluția sa va fi explorată în detaliu. Unele coduri sunt date în acest ghid în care vom vedea cum apare această eroare și cum să gestionăm acest tip de eroare în C++.

Exemplul 1: Dereferencing Int







În acest cod, vom încerca să dereferenționăm „int” în C++. Acum, includem pur și simplu fișierul antet „iostream” pentru a utiliza funcțiile definite. Sub aceasta, folosim „namespace std” și invocăm metoda „main()” aici. Apoi, declarăm variabila „my_num” cu tipul de date „int” și atribuim „99” acestei variabile.



Acum, declarăm „my_value” de tipul de date „int” și o inițializam cu „*my_num”, ceea ce înseamnă că încercăm să dereferenționăm variabila „my_num” care este de tipul de date „int”. Eroarea este generată pe această linie în timpul compilării, deoarece nu putem anula referința „int”. Vrem să afișăm valoarea pe care o obținem după dereferențierea int, așa că plasăm „cout” în care am adăugat variabila „my_value”.



Cod 1:





#include
folosind namespace std;
int principal ( ) {
int my_num = 99 ;
int valoarea_mea = * my_num;
cout << 'Valoarea pe care o obținem prin dereferențierea int este: ' << valoarea_mea << endl;
întoarcere 0 ;
}

Ieșire:



Aici, am putea observa că nu este afișată nicio valoare și apare o eroare care spune că există un argument de tip nevalid de „*” unar. Aceasta înseamnă că nu putem dereferentă „int” în C++.

Soluția 1: Fără dereferențiere

Aici, vom obține valoarea întreagă direct fără dereferențiere. Importăm fișierul antet „iostream”, deoarece sunt prezente unele definiții de funcție. Apoi, introducem „namespace std” împreună cu cuvântul cheie „using” și apoi apelăm aici metoda „main()”. Acum, inițializam variabila „my_num” a tipului de date „int” cu valoarea „99”.

Apoi, inițializam o altă variabilă cu numele „my_value” și o atribuim cu variabila „my_num” care conține numărul întreg. După aceasta, obținem această valoare întreagă direct, fără dereferențiere, plasând „my_value” în „cout”. Aceasta obține și afișează valoarea întreagă.

Cod 1:

#include
folosind namespace std;
int principal ( ) {
int my_num = 99 ;
int valoarea_mea = numărul_meu;
cout << „Valoarea pe care o obținem fără a dereferenția int este:” << valoarea_mea << endl;
întoarcere 0 ;
}

Ieșire:

Valoarea întreagă este redată aici, pe care o obținem fără dereferențiere în codul nostru C++. Accesăm direct această valoare întreagă și o afișăm.

Soluția 2: Prin dereferențierea pointerului

Fișierul antet „iostream” conține anumite definiții de funcție; le-am importat. Apoi, rulăm funcția „main()” aici după ce tastăm „namespace std” și cuvântul cheie „using”. Variabila „my_num” a tipului de date „int” este acum inițializată cu valoarea „99”.

După aceasta, inițializam un pointer „my_ptr” și atribuim adresa variabilei „my_num” acestui pointer. Dedesubt, dereferențăm indicatorul și atribuim valoarea pe care o obținem variabilei „my_value” pe măsură ce am inițializat „my_value” cu „*my_ptr”. Acum, plasăm „cout” în care trecem variabila „my_value” pentru a afișa valoarea întreagă pe care o obținem prin dereferențierea pointerului.

Cod 2:

#include
folosind namespace std;
int principal ( ) {
int my_num = 99 ;
int * my_ptr = & my_num;
int valoarea_mea = * my_ptr;
cout << „Valoarea lui int pe care o obținem prin dereferențierea unui pointer este:” << valoarea_mea << endl;
întoarcere 0 ;
}

Ieșire:

Valoarea întreagă pe care o obținem după dereferențiarea pointerului din codul nostru este acum afișată aici. Deci, aceasta este modalitatea corectă de aplicare a dereferențării în C++.

Exemplul 2: Dereferencing Int

Să încercăm să dereferenționăm „int” în C++ în acest cod. Pentru a folosi funcțiile care sunt definite în „iostream”, trebuie doar să includem fișierul antet „iostream”. Aici folosim „namespace std” și apelăm funcția „main()”. Apoi, creăm variabila „a” și îi dăm tipul de date „int” împreună cu valoarea „75”.

Sub acesta, creăm un pointer numit „newPointer” și atribuim adresa variabilei „a” acestui pointer cu ajutorul lui „&”. Apoi, inițializam variabila „num” de mai jos cu „*a”, ceea ce indică faptul că încercăm să dereferim variabila „a” care este de tipul de date „int”. Deoarece nu putem dereferenția „int”, acum se produce o eroare pe această linie în timpul compilării. După aceasta, folosim și „cout” în care adăugăm variabila „num”.

Cod 2:

#include
folosind namespace std;
int principal ( ) {
int a = 75 ;
int * newPointer = & A;
număr int = * A;
cout << 'Valoarea dereferențării int este: ' << pe unu << endl;
întoarcere 0 ;
}

Ieșire:

Aici, putem vedea că nu este afișată nicio valoare și apare un mesaj de eroare care indică un „parametru de tip nevalid al unary”*”. Acest lucru indică faptul că „int” nu poate fi dereferențiat în C++.

Soluția 1: Fără dereferențiere

Nu va trebui să dereferenți pentru a obține imediat valoarea întreagă. Îl importăm deoarece fișierul antet „iostream” conține anumite definiții de funcție. Funcția „main()” este apoi invocată după ce sunt introduse cuvintele cheie „using” și „namespace std”. Variabila „a” a tipului de date „int” este acum inițializată cu valoarea „75”. După aceea, inserăm „a” în „cout” pentru a obține această valoare întreagă imediat, fără dereferențiere. Aceasta preia valoarea întreagă și o arată aici.

Cod 1:

#include
folosind namespace std;
int principal ( ) {
int a = 75 ;
cout << „Valoarea pe care o obținem fără dereferențiere este:” << A << endl;
întoarcere 0 ;
}

Ieșire:

Valoarea întreagă care se obține din codul nostru C++ fără dereferențiere este prezentată aici. Această valoare întreagă este imediat accesibilă și este afișată aici.

Soluția 2:

Importăm fișierul antet „iostream” care conține unele definiții de funcție. Aici, tastăm „namespace std” și cuvântul cheie „using” înainte de a executa funcția „main()”. Valoarea „75” este atribuită variabilei „a”.

Apoi, declarăm un pointer numit „mypointer” și îl inițializam cu adresa variabilei „a”. Sub acesta, dereferențiăm indicatorul și atribuim valoarea pe care o obținem din acesta variabilei „rezultat” pe măsură ce inițializam „rezultatul” cu „*mypointer”. După dereferențierea indicatorului, plasăm comanda „cout” și trecem variabila „rezultat” pentru a afișa valoarea întreagă.

Cod 2:

#include
folosind namespace std;
int principal ( ) {
int a = 75 ;
int * mypointer = & A;
int rezultat = * indicatorul meu;
cout << 'Valoarea pe care o obținem prin dereferențierea indicatorului este: ' << rezultat << endl;
întoarcere 0 ;
}

Ieșire:

Aceasta este tehnica potrivită pentru a aplica dereferențiarea în C++. Redă valoarea întreagă pe care am obținut-o după dereferențiarea pointerului în loc de dereferențiarea „int”.

Concluzie

Am explorat că atunci când încercăm să obținem valoarea prin dereferențierea „int” în C++, va apărea „parametrul de tip invalid al unei „*” având int”, ceea ce înseamnă că „int nu poate fi dereferențiat în C++”. Am explicat și soluția acestei erori. Am folosit codul în care au apărut erorile și codurile în care am oferit soluția acelei erori în acest ghid.