一路狂奔 发表于 2013-12-12 17:25:58

大哥们小弟遇到问题了,帮帮忙。求解!

#include <stdio.h>#include <malloc.h>
void print(char *,int);main(){    char *s1 = "abcde";    char *s2 = "abcde";    char s3[] = "abcd";    long int *s4;    char *s5 = "abcde";    int a = 5;    int b =6;//a,b在栈上,&a>&b 地址反向增长

我就纳闷了 为什么&a>&b    符号“&”不是取址操作符吗,那么&a>&b的意思就是 a的地址大于b的地址。看上面的代码和图片明显是先定义的a后定义的b, a先压入栈的,然后b在压入栈,应该是b的地址高啊a的地址低。。。这是怎么回事啊 ,我的理解是不是有问题。

求解
求解!!!

~逆天~ 发表于 2013-12-13 09:35:40

这是汇编,弄个C贴错地方了

小名明SIU 发表于 2013-12-13 20:14:41

你去看一下汇编, 入栈是push 指令esp = esp -4所以后进去的地址小, 所以&a > &b

小名明SIU 发表于 2013-12-13 20:16:25

你再看看你的图   栈是朝低地址方向的所以后进去的肯定小了

一路狂奔 发表于 2013-12-14 11:39:01

懂得了谢谢大神
页: [1]
查看完整版本: 大哥们小弟遇到问题了,帮帮忙。求解!