关于数组无效内存引用

问题遇到的现象和发生背景

要求判断一个数的二进制是不是回文数,发生无效内存引用

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
int main() 
{    int x, x0, i=0, j, flag=1;
    int a[10];
    scanf("%d", x);
    x0=x;
    while (x)
    {    a[i++]=x%2;
        x/=2;
    } 
    for (j=0, i--; i>j; i--, j++)
    {    if (a[i]!=a[j]) 
        {    flag=0;
            break;
        }
    }
    if (flag) printf("Yes!\n%d=%s\n", x0, a);
    else printf("No.\n");
    return 0;
}

运行结果及报错内容

无输出结果,显示无效内存引用

我想要达到的结果

为什么会出现无效内存引用的问题呢?感谢解答!

scanf("%d", x);
改成
scanf("%d", &x);