【发布时间】:2011-10-09 23:07:38
【问题描述】:
我有一个看起来像这样的结构:
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
}
有人对此有很好的解释吗?
【问题讨论】:
-
您的意思是“为什么这两行给出相同的结果”,还是“为什么每个函数调用的结果都相同”?前者很容易(因为指针指向同一个东西),后者是不可能的。
-
如果按名称引用数组而不使用方括号,它将伪装成指向第一个元素的指针。
标签: c