Wie kommt ein array Adresse ist gleich seinem Wert in C?

In der folgende code, pointer-Werte und Zeiger Adressen unterscheiden sich, wie erwartet.

Aber array-Werte und Adressen nicht!

Wie kann das sein?

Ausgabe

my_array = 0022FF00
&my_array = 0022FF00
pointer_to_array = 0022FF00
&pointer_to_array = 0022FEFC
#include <stdio.h>

int main()
{
  char my_array[100] = "some cool string";
  printf("my_array = %p\n", my_array);
  printf("&my_array = %p\n", &my_array);

  char *pointer_to_array = my_array;
  printf("pointer_to_array = %p\n", pointer_to_array);
  printf("&pointer_to_array = %p\n", &pointer_to_array);

  printf("Press ENTER to continue...\n");
  getchar();
  return 0;
}
Aus der comp.lang.c FAQ: - [was ist gemeint mit der `äquivalenz von Zeigern und arrays" in C? ](c-faq.com/aryptr/aryptrequiv.html) - [Da-array-Referenzen Zerfall in Zeiger, wenn arr ist ein array, was ist der Unterschied zwischen arr und &arr? ](c-faq.com/aryptr/aryvsadr.html) Oder gehen Sie Lesen Sie den gesamten Arrays und Zeiger - Bereich.
Ich habe dazu eine Antwort mit Diagramm zu dieser Frage in zwei Jahren wieder hier, Was bedeutet sizeof(&array) zurück?

InformationsquelleAutor Alexandre | 2010-03-27

Schreibe einen Kommentar