Vergleich zwischen Zeiger und Ganzzahl ('int *' und 'int')

7

Ich bin verwirrt, warum ich diese Warnung bekomme:

Ich initiiere matchObsFlag mit:

%Vor%

aber wenn ich diese Zeile führe:

%Vor%

Ich bekomme diese Warnung. Irgendwelche Ideen?

    
RGriffiths 07.09.2013, 12:54
quelle

2 Antworten

11

Sie erhalten sicherlich eine Warnung, weil Sie nicht 1 als (int*) 1 deklariert haben, so dass Sie eine Gleichheit zwischen verschiedenen Dingen testen: einer Adresse und einem int.

Also ist es entweder if(matchObsFlag == (int*)1) oder if(*matchObsFlag == 1) , je nachdem was du machen willst.

    
LudoZik 07.09.2013, 12:59
quelle
8
%Vor%

Der Typ von matchObsFlag ist int* , während das konstante Literal vom Typ int ist. Der Vergleich zwischen den nicht verwandten Typen verursacht die Warnung.

matchObsFlag ist ein NULL-Zeiger. matchObsFlag muss auf einen gültigen Speicherort zeigen, wenn Sie den Wert, auf den der Zeiger zeigt, vergleichen möchten.

%Vor%

Um den Wert zu vergleichen, müssen Sie den Zeiger jetzt dereferenzieren. Also versuche es -

%Vor%     
Mahesh 07.09.2013 13:01
quelle

Tags und Links