2017-11-25 2 views
0

Um genauer zu verstehen, finden Sie in der folgenden Erklärung.Benötigen Sie eine Deklaration des Zeigers, um die Adresse eines Arrays von ganzen Zahlen zu halten

int arr[3]; 

Nun schreiben xyz = &arr; eine Erklärung in einer solchen Art und Weise, in der Compiler nicht Warnung werfen sollte.

So deklarieren Sie xyz?

Für den Code unten,

int main(void) 
{ 

int arr[3]; 
int *p; 
int **pp; 

p = arr; 
pp = &arr; 

return 0; 
} 

.

WARNING: 
t.c: In function ‘main’: 
t.c:11:4: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types] 
    pp = &arr; 
    ^

Ziel: Need eine Erklärung, dass xyz = &arr, wo es nicht Warnung werfen sollte.

+0

* Warum * brauchen Sie einen Zeiger auf das * Array * anstatt auf sein erstes Element (was ist der häufigste Anwendungsfall von mindestens 99%)? –

+0

Es ist eine Frage von Interviewer. –

Antwort

3

int (*xyz)[3]

Pointer auf ein Array von 3 int Elemente.

Und FYI int** und int (*)[3] ist nicht gleich.

+0

Was ist mit 'void * xyz = &arr;'? –

+1

@ RingØ .: Das funktioniert..aber das muss irgendwann vergeben werden. Und dann ... – coderredoc

Verwandte Themen