C++ Ungültige Konvertierung von Int* in Int
Dieses kurze Tutorial behandelt die Fehlermeldung "Ungültige Konversation von int* zu int"
. Lassen Sie uns zunächst die Zeiger in C++ zusammenfassen.
Zeigervorbereitungen in C++
Zeiger werden verwendet, um die Adresse (einen hexadezimalen Wert) einer Variablen zu speichern, und sie wird der Variablen vom Typ Zeiger mithilfe des kaufmännischen Und-Zeichens (&
) zugewiesen, das auch als Adressoperator vor dem Variablennamen bekannt ist.
Zeiger werden mit dem Symbol *
wie folgt deklariert:
DataType *p;
Wir können die Adresse einer Integer-Variablen einem Integer-Zeiger mit der folgenden Anweisung zuweisen:
int* p = &a;
Die obige Codezeile weist die Adresse der Integer-Variablen a
dem Integer-Zeiger p
zu.
der Konvertierungsfehler
Wenn einer Integer-Variablen ein hexadezimaler Adresswert einer Variable anstelle eines Integer-Typ-Werts zugewiesen wird, tritt der Fehler ungültige Konvertierung von int* in int
auf.
Beispielcode:
#include <iostream>
using namespace std;
int main() {
int a = 10;
int p;
p = &a; // invalid conversion error
cout << p;
}
Der obige Code erzeugt in Zeile 07 einen Konvertierungsfehler, da p
eine Adresse vom Typ int*
zugewiesen wird, die nicht in einer Integer-Variablen gespeichert werden kann.
Ausgang:
main.cpp: In function 'int main()': main.cpp:7:7: error: invalid conversion from 'int*' to 'int' [-fpermissive] ptr = &p; //invalid conversion. ^
Beheben Sie den Konvertierungsfehler
Die meisten Compiler erlauben keine Typumwandlung vom Zeigertyp in den einfachen Datentyp. Daher kann das Problem gelöst werden, indem sichergestellt wird, dass der Adresstypwert einer richtigen Zeigervariablen zugewiesen wird.
Beispielcode:
#include <iostream>
using namespace std;
int main() {
int a = 10;
int* p;
p = &a;
cout << p;
}
Das Symbol *
bei der Deklaration von p
macht es zu einem Zeiger auf eine ganze Zahl. Dadurch kann es die Adresse einer Integer-Variablen speichern, ohne dass Typkonvertierungen erforderlich sind.