全局变量和局部变量的存储地址问题。
int dog, cat, bird, fish;
int main() {
int i, j, k;
cout << "dog: " << (long)&dog << endl;
cout << "cat: " << (long)&cat << endl;
cout << "bird: " << (long)&bird << endl;
cout << "fish: " << (long)&fish << endl;
cout << "i: " << (long)&i << endl;
cout << "j: " << (long)&j << endl;
cout << "k: " << (long)&k << endl;
} ///:~
dog: 4323632
cat: 4323636
bird: 4323640
fish: 4323644
i: 6684160
j: 6684156
k: 6684152
这是C++编程思想的一道题目
它的全局变量的存储地址按照声明的顺序增加,局部变量按照声明的顺序递减
我的理解是全局变量存放在全局变量存储区,所以递增,而局部变量存储在栈中,所以递减,这种理解对么??
int i,j,k;
void f()
{
int a,b,c;
long a1,a2,a3,a4,a5,a6;
a1 = (long)&i;
a2 = (long)&j;
a3 = (long)&k;
a4 = (long)&a;
a5 = (long)&b;
a6 = (long)&c;
}
void CFormDlg::OnButton1()
{
f();
}
a1 4286560
a2 4286556
a3 4286552
a4 1242708
a5 1242704
a6 1242700
这是我在vc6.0建的程序,为什么全局变量和局部变量的地址都是按照声明的顺序递减呢
另外,局部变量是存放在栈中的,那么我声明int a1,a2,a3;先把谁压栈,a1还是a3,谢谢!