Ich wurde mit Array und Zeiger in C. experimentieren Und hierGibt es Möglichkeiten der Array-Darstellung mit Pointers in C?
http://r4r.co.in/c/c_topics/c_array_basics/array_representation_in_memory.shtml
ich gelesen, dass
ar[2]=*(ar+(sizeof(datatype)*2));
jedoch nach dem Schreiben folgenden Testprogramm in C: -
#include<stdio.h>
#include<conio.h>
int main()
{
int array[]={10,11,12,13,14};
printf("\nArray:%d",array);
printf("\nArray+4:%p",array+4);
printf("\nArray+(sizeof(int)*4):%p",array+((sizeof(int*))*4));
printf("\n*(Array+4):%d",*(array+4));
printf("\n*(Array+(sizeof(int)*4)):%d",*(array+((sizeof(int*))*4)));
getch();
return 0;
}
Ich habe folgenden Ausgang: -
Array:2686700
Array+4:0028FEFC
Array+(sizeof(int)*4):0028FF2C
*(Array+4):14
*(Array+(sizeof(int)*4)):4214784
von hier So stellte ich fest, dass der Ausdruck
array[4]=*(array+(sizeof(int)*4));
nicht Ausdruck arbeitet eher
array[4]=*(array+4);
wahr ist.
So ist meine Schlussfolgerung richtig oder falsch. Wenn es falsch ist, warum ist das dann so? Bitte helft mir ich bin etwas verwirrt
Sprache: -C
Version: -gcc (TDM--1) 4.7.1
Plattform: -Windows 8,1
Beachte den Datentyp von 'array'. Pointer aritmatic beinhaltet den Datentyp des Zeigers. und bitte benutzen Sie '% p' zum Drucken von Zeigern. –
Ja, für jedes Array (oder Zeiger) 'a' und Index' i' ist der Ausdruck 'a [i]' genau das gleiche wie '* (a + i)'. Es ist sogar in der C-Spezifikation. –
Warum ist es an einigen Stellen geschrieben, dass ar [2] = * (ar + (sizeof (Datentyp) * 2)). Ist das falsch? Erklären Sie bitte – DCP