Pointer auf Array

EddieG

Erfahrenes Mitglied
Hi,
ich bekomme die Fehlermeldung error C2100, wenn ich mit einem Pointer auf einen Array zeige
Code:
class Berechnung{
int ergi; //Ergebnis Int
int ergip; //Ergebnis Int Pointer
int iArr[5];
double dArr[5];
double ergd;//Ergebnis double 
double ergdp;//Ergebnis double Pointer
Public:
void getArrayIPElemente()
    {
        cout << "Pointer Int: "<<endl;

         int *iPArr = this->iArr; // int *iPArr = &this->iArr; auch schon versucht selbe Problem

        for (int x =0; x< 5;x++)
        {
            cout  <<"i: "<<x<<" Zeiger: "<< *iPArr[x] << " Addi: " << &*iPArr[x] << endl;
            this->ergip+=*iPArr[x];
            *iPArr++;
            if(x==4)
            {
                cout <<"\n"<<endl;
            }

        }        
    }
...
 
Das ist nicht die Antwort auf meine Frage.

Wie oft dereferenzierst du in der geposteten Anweisung iPArr?
 
ja der Fehler war folgender
Code:
            cout  <<"i: "<<x<<" Zeiger: "<< *iPArr[x] << " Addi: " << &*iPArr[x] << endl;
            this->ergip+=*iPArr[x];
muss *iPArr heißen.
 
Ich denke du hast da noch ein bisschen Konfusion was die Operatoren anbelangt.

Grob gesagt macht arr[a] folgendes:
*(arr + a)

Was macht also *iPArr[x]?
*(*arr + x)

Das sind zwei Dereferenzierung, pArr ist jedoch vom typ int* und daher also nur 1 Mal dereferenzierbar.

Daher:
std::cout << "; " << x << " Zeiger: " << (iPArr + x) << std::endl;

Das zweite wird nicht gehen, du kannst den Zeiger auf den Zeiger nur auf das iPArr selber bestimmen, aber nicht z.B. für das 2te Element, denn diese Adresse ist nirgendwo gespeichert.
 
Zurück