返回值为0 不知道怎么回事

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.h>
int main()
{
    void fun(int a,int b,int *t);
    int x,y,m;
    int *k;
    k=&m;
    printf("输入两个整数:");
    scanf("%d %d",&x,&y);
    fun(x,y,k);
    printf("最大公约数为 %d",*k);
    printf("\n");
    return(*k);
    
}
void fun(int a,int b,int *t)
{
    int r;
    if(a<b)
    {
        r=a;a=b;b=r;
    }
    r=a%b;
    while(r!=0)
    {
        a=b;b=r;
        r=a%b;
    
    *t=r;
}
}

29行改为 *t=b