64,662
社区成员
发帖
与我相关
我的任务
分享
int var1 = 10;//地址为1000
char var2 = 'a';//地址为1001
int *ptr;
ptr = var1;
cout << *ptr << endl;
ptr++;
cout << *ptr << endl;
#include <iostream>
using namespace std;
const int MAX = 3;
int main ()
{
int var0 = 0;
int var1 = 1;
int var2 = 100;
char var3 = 'a';
int *ptr;
cout << &var0 << endl;
cout << var0 << endl;
cout << &var1 << endl;
cout << var1 << endl;
ptr = &var2;
cout << ptr << endl;
cout << *ptr << endl;
ptr++;
cout << ptr << endl;
cout << *ptr << endl;
cout << &var3 << endl;
cout << var3 << endl;
return 0;
}
输出:
0x28ff54 //var0
0
0x28ff50 //var1
1
0x28ff4c //var2
100
0x28ff50 //var1
1
ad //var3
a
最后一个问题,变量的内存地址分配,不会按照定义变量的顺序来分配吗?
上面的地址顺序分别是var2 - var1 - var0了,难道是倒着的。。
另外一个cout << &var3 << endl;的地址为什么输出:ad呢
#include <iostream>
using namespace std;
const int MAX = 3;
int main ()
{
int var1 = 10;//地址为0x28ff54
char var2 = 'a';//地址为0x28ff58
int *ptr;
ptr = &var1;
cout << ptr << endl;
cout << *ptr << endl;
ptr++;
cout << ptr << endl;
cout << *ptr << endl;
return 0;
}
输出:
0x28ff54
10
0x28ff58
2686840
第二次的cout << *ptr << endl;结果是否就是无法预知了。。。。