arr ++ funktioniert nicht, aber ich möchte wissen, warum?
arr
speichert die Basisadresse, die &arr[0]
daher weist arr
immer in die Ausgangsposition des Arrays und nicht geändert werden kann. das ist der Grund, warum arr++
ungültig ist und nicht funktioniert.
Lösung:
Sie stattdessen arr
mit Hilfe von *
(Referenzierung Operator) Bediener die Array-Elemente
for(i=0;i<5;i++)
{
printf("%d\n",*(arr+i));
//pointer arithmetic *(arr+i)=*(&arr[0]+i*sizeof(data_type_of_arr))
}
hier verwenden können, um zu drucken Zeigerarithmetik ist hilfreich
oder auch, um zu verstehen, die Daten stattdessen verwenden, um den Index i
auf diese Weise zu drucken:
for(i=0;i<5;i++)
{
printf("%d\n",arr[i]);
}
Eine weitere Möglichkeit, es zu tun ist betrachten ein neuer Zeiger auf &arr[0]
und inkrementieren.
int *p=&arr[0];
for(i=0;i<5;i++)
{
printf("%d\n",*p);
p++;
//pointer arithmetic *(p)=*((&p)+1*sizeof(data_type_of_arr))
//NOTE: address of p updates for every iteration
}
Für weitere Lesung zu Zeigerarithmetik: here
Als Alternative können Sie tyo Array über den Index zugreifen: arr [i] oder deklarieren Sie zusätzlichen Zeiger int * ptr = arr und inkrementieren/dekrementieren. –