关于const中指针及其操作在gcc与g++编译器下的解释?

int main()
{
const int x=5;
printf("转换前:x=%d\n",x);
int p=(int)&x;
p=10;
printf("转换后:x=%d\n",x);
printf("转换后:*p=%d\n",*p);
const int
q = &x;
* q = 10;
printf("x= %d\n",x);
printf("q= %d\n",*q);
return 0;

图片说明图片说明

两种情况都不理解 发现其中所有变量的地址都一样
请大佬详解

你的代码根本不能编译

#include <stdio.h>

int main()
{
const int x=5;
printf("转换前:x=%d\n",x);
int *p=(int *)&x; //这里是指针
*p=10; //指针
printf("转换后:x=%d\n",x);
printf("转换后:*p=%d\n",*p);
const int *q = &x;
//*q = 10; //只读的,修改是非法的
printf("x= %d\n",x);
printf("q= %d\n",*q);
return 0;
}

转换前:x=5
转换后:x=10
转换后:*p=10
x= 10
q= 10