Адрес массива - разница между амперсандом и отсутствием амперсанда

У меня есть структура, которая выглядит так:

struct packet {
  int a;
  char data[500];
};
typedef struct packet packet_t;

Я немного запутался, почему следующий код выводит один и тот же адрес для каждого printf:

void myfunction() {
  packet_t packet;
  printf("%p\n", packet.data);   //e.g., outputs 0x7fff1c323c9c
  printf("%p\n", &packet.data);  //e.g., outputs 0x7fff1c323c9c
}

Есть ли у кого-нибудь хорошее объяснение этому?

8
задан Alec 11 October 2011 в 01:48
поделиться