#include<iostream>
using namespace std;
int main()
{
int a=100,b=150,c=200;
int d;
int const *s=&b;
const int *t=&b;
cout<<*(++s)<<" "<<*(--t)<<endl;
return 0;
}
下列程序的输出结果是什么?
A 150 150 B 200 100 C 100 200 D 程序有错误
很明显怎样都是选D 。。。可是谁能帮忙分析下系统栈是如何存a b c? ++s ++t 取地址后到底发生了什么?指针s是不可更改的,可是之后++s,程序跑起来竟然没报错?
我把这个程序简化,看了一下main系统栈中存储的a ,b ,c的值如下,而如果按这张图的话,++s和--t指向的就是cc的空值,这是为什么?
0x001DFE46 cc cc cc cc cc cc cc cc c8 00 00 00 cc cc cc cc cc cc cc cc 96 00 00 00 cc cc cc cc
0x001DFE64 cc cc cc cc 64 00 00 00