栈的增长方向是由高地址向低地址的,那如何判断呢?
func() { int a; int b; }
在不同的编译器下,a,b在栈上的位置可能不同。例如gcc3.x是按定义的顺序入栈的,但gcc4.x正好相反。你不能用它来判断栈的方向。 但无论如何,函数调用的顺序不会变,所以其参数压栈的先后顺序也不会变.
#include<stdio.h>
void func1();
void func2(int *a);
void func1()
{
int a=0;
func2(&a);
}
void func2(int *a)
{
int b=0;
printf("%x\n%x\n",a,&b);
}
int main()
{
func1();
}
29f6ac
29f5c8