C++小白关于C++ primer中指针交换的问题

C++primer第五版的6.22题,要求是交换两个int指针。
#include
void exchange(int *&x,int *&y);
void exchange(int *&x,int *&y)
{
int *z;
z=x;
x=y;
y=z;
}
int main()
{
using namespace std;
int *p;
int *t;
int i=10;
int j=20;
*p=i;
*t=j;
exchange(p,t);
cout<<*p<<*t<<endl;
return 0;
}
以上是代码,在Dev-c++中无法编译,显示的信息是编译器已停止工作。请哪位好心的大神指点一下我代码中有什么问题

*p=i;
*t=j;

改成:

p=&i;
t=&j;

楼上正解。
你的p和t指针一开始指向了一个未知区域,你试图把i和j的值写入一个未知区域自然出现了异常