指针地址传递有关问题,求解答

指针地址传递问题,求解答
# include<stdio.h>

int main(void)
{
   int i = 6;
   int j = 8;

   
   printf("地址:%p\n",&i);
   printf("地址:%p\n",&j);


   f(&i,&j);

   printf("i = %d\tj = %d\t",i,j);

   return 0;
}
int f(int * p,int * q)
{
int * t;
*t = *p;
*p = *q;
*q = *t;

return 0;
}
在被调函数里面建立临时指,返回时还是p和q的地址,互换还是地址里面的值。为什么在编译没出错,在执行后会程序错误无法执行。
------解决思路----------------------
int * t;  此时t为一个野指针,没有为其开辟空间,其指向的地址是不确定的,对其访问很危险。

int * t;
*t = *p;
*p = *q;
*q = *t;
改成
int  t;
t = *p;
*p = *q;
*q = t;
就好了