C++ STL 中栈的问题,求指教

某项目中使用了stl的栈,可是调试一直有问题,结果精简到这里,请问它的运行结果为什么那么奇怪,我发现那个char*换成char,以及op[100]换成op就正常了,这是为什么呢

输入
1 2
输出
2 2
是哪里出问题了吗?

#include<iostream>
#include<stack>
using namespace std;

int main()
{
    char op[100];
    stack<char*>   a;

  for (int i=0;i<2;i++)
    { 
        cin>>op;
        a.push(op);
    }


    while(!a.empty())
    {
        cout<<a.top()<<endl;
        a.pop();
    }

   return 0;
}

 char op[100];
->
char * op;

op = new char[100]; //加上这个
cin>>op;
a.push(op);

a.push的元素有误,a[j]

很明显:cin<<op;写入的都是同一块位置op[0],假设op[0]地址为:0x01 第一次输入1时,0x01这块地址存的值1。push到栈中,由于栈a类型为char*,
a[0]存储的是:0x01这块地址,a={'0x01'};当你第二次调用输入2时,还是写入到0x01这个地址,此时0x01地址存的值为2。push到中 a={'0x01','0x01'}。那么你去输入a当然只会看到2,2。