刚闲来无事,逛了哈论坛,看到这样一道题目:
#include <iostream>
using namespace std;
int main(void)
{
char p[6]="hello";
char q[6]="world";
char *r="ss";
char *t="qq";
cout<< &p <<", " << &q << endl;
cout << &r <<", "<< &t << endl;
}
我测试了三个不同的环境,分别输出如下:
在SUNOS5.8下测试C++程序的结果为:
ffbef976, ffbef970
ffbef96c, ffbef968
用g++ 4.1.1 20070105 (Red Hat 4.1.1-53)测试的结果为:
0xbff8ea4e, 0xbff8ea48
0xbff8ea44, 0xbff8ea40
VS2008结果为:
0012FF58, 0012FF48
0012FF3C, 0012FF30
可以看出先申请的变量的地址比后申请的地址大,C语言没有出现这个问题?
虽然大多数网友说是编译器的原因造成的,但怎么会几种编译器都是这样的呢
仍然疑惑中........