2017-12-05 1 views
-2

** Ich möchte die Zeiger auf das erste Element jedes Array zuweisen, aber ich bekomme diese Nachricht -> inkompatible Typen in Zuordnung von 'int 'to' int [10] 'in C **inkompatible Typen in Zuordnung von 'int' zu 'int [10]' in C

#include <stdio.h> 
#include <stdlib.h> 
#define ten 10 
int main() 
{ 
    int min = 0, max = 0, *minptr, *maxptr, i; 
    int arr1[ten], arr2[ten], *arr1_ptr[ten], *arr2_ptr[ten]; 
    arr1_ptr = &arr1[0]; 
    arr2_ptr = &arr2[0]; 
    minptr = &min; 
    maxptr = &max; 

    return 0; 
} 

Antwort

1

Die Typen sind unterschiedlich. Der Typ &arr1[0] ist int*, aber der von arr1_ptr ist int*[10]. Deshalb diese Fehlermeldung. Sie haben die Fehlermeldung sogar falsch kopiert.

Beachten Sie auch, dass vielleicht das ist, was Sie

arr1_ptr[0] = &arr1[0]; 

wollte, weil jetzt die Typen übereinstimmen und es bedeutet auch - Sie eine int Variablen zuweisen Adresse auf das erste Element eines Arrays, wobei jedes Element des Arrays ist vom Typ int*.

1

arr1[0] ist ein einzelnerint Wert. Daher ist &arr1[0] ein Zeiger auf diesen einzelnen int. Und daher muss &arr1[0] vom Typ int * sein. Die Variable arr1_ptr ist ein Array von 10 Zeigern zu int. Wenn Sie ein Element dieses Arrays Punkt auf ein Element von arr1 machen wollen, dann müssen Sie die Adresse eines Elements der arr1 zu einem Element der arr1_ptr zuweisen:

arr1_ptr[0] = &arr1[0]; 

Wenn auf der anderen Seite Sie möchten Zeiger auf ein Array, dann musst du zB

int (*arr1_ptr)[ten] = &arr1; 
Verwandte Themen