#include<stdio.h> struct _node { int a; int b; }; void test(int a,int b) { int c=1; int d=1; struct _node node; node.a=1; node.b=2; printf("b: %p\n", &b); printf("a: %p\n", &a); printf("c: %p\n", &c); printf("d: %p\n", &d); printf("node: %p\n", &node); printf("node.a: %p\n", &node.a); printf("node.b: %p\n", &node.b); } int main(void) { test(1,1); return 0; }
b: 0012FEF8
a: 0012FEF4
c: 0012FEE8
d: 0012FEE4
node: 0012FEDC
node.a: 0012FEDC
node.b: 0012FEE0
即入栈顺序是:
int b;
int a;
int c;
int d;
int node.b
int node.a
为了确保node的地址就是node.a的地址,所以node.b必须先进栈。