64,635
社区成员
发帖
与我相关
我的任务
分享
typedef struct
{
int foo;
int bar;
} MyStruct;
int main(int argc, char** argv)
{
MyStruct data = {1,2};
printf("foo: %d, bar: %d\n", data.foo, data.bar);
}
编译得到的东西,大致是这样的:
压栈int那么大的字节(argc)
压栈指针那么大的字节(argv)
压栈MyStruct那么大的字节(data)
将data的foo位置,int那么大的字节赋值为1
将data的bar位置,int那么大的字节赋值为2
压栈printf第一个参数的静态字符串所在的地址
将data的foo位置,int那么大的字节压栈
将data的bar位置,int那么大的字节压栈
调用printf函数
清栈
清栈,退出
你看这里面,哪里有struct这种东西了?[/quote]
顺序反了[/quote]
其实咱不会汇编,纯YY的,咩哈哈哈!
typedef struct
{
int foo;
int bar;
} MyStruct;
int main(int argc, char** argv)
{
MyStruct data = {1,2};
printf("foo: %d, bar: %d\n", data.foo, data.bar);
}
编译得到的东西,大致是这样的:
压栈int那么大的字节(argc)
压栈指针那么大的字节(argv)
压栈MyStruct那么大的字节(data)
将data的foo位置,int那么大的字节赋值为1
将data的bar位置,int那么大的字节赋值为2
压栈printf第一个参数的静态字符串所在的地址
将data的foo位置,int那么大的字节压栈
将data的bar位置,int那么大的字节压栈
调用printf函数
清栈
清栈,退出
你看这里面,哪里有struct这种东西了?[/quote]
顺序反了
typedef struct
{
int foo;
int bar;
} MyStruct;
int main(int argc, char** argv)
{
MyStruct data = {1,2};
printf("foo: %d, bar: %d\n", data.foo, data.bar);
}
编译得到的东西,大致是这样的:
压栈int那么大的字节(argc)
压栈指针那么大的字节(argv)
压栈MyStruct那么大的字节(data)
将data的foo位置,int那么大的字节赋值为1
将data的bar位置,int那么大的字节赋值为2
压栈printf第一个参数的静态字符串所在的地址
将data的foo位置,int那么大的字节压栈
将data的bar位置,int那么大的字节压栈
调用printf函数
清栈
清栈,退出
你看这里面,哪里有struct这种东西了?