关于(void*)的问题

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

关于(void*)指针的问题

问题相关代码,请勿粘贴截图

代码:
#include<stdio.h>

void get_xy(double *x_p,double *y_p)
{
printf("x_p..%p,y_p..%p\n",(void *)x_p,(void *)y_p);
printf("&x_p..%p,&y_p..%p\n",(void *)&x_p,(void *)&y_p);

*x_p=1.0;
*y_p=2.0;

}

int main(){
double x;
double y;

printf("&x..%p,&y..%p\n",(void *)&x,(void *)&y);

get_xy(&x,&y);

printf("x..%f,y..%f",x,y);
return 0;

}

#include<stdio.h>

void get_xy(double *x_p,double *y_p)
{
printf("x_p..%p,y_p..%p\n",*x_p,*y_p);
printf("&x_p..%p,&y_p..%p\n",&x_p,&y_p);

*x_p=1.0;
*y_p=2.0;

}

int main(){
double x;
double y;

printf("&x..%p,&y..%p\n",&x,&y);

get_xy(&x,&y);

printf("x..%f,y..%f",x,y);
return 0;

}

运行结果及报错内容

第一次输出
&x..0x16efb75d0,&y..0x16efb75c8
x_p..0x16efb75d0,y_p..0x16efb75c8
&x_p..0x16efb7588,&y_p..0x16efb7580
x..1.000000,y..2.000000

第二次输出
&x..0x16d1c35d0,&y..0x16d1c35c8 //这两行为什么不一样?
x_p..0x102c3fef0,y_p..0x1220800102fc6b74
&x_p..0x16d1c3588,&y_p..0x16d1c3580
x..1.000000,y..2.000000

##补充提问
加了(void*)是表现形式变了吗

(void*)是强制类型转换。 第二次输出不一样见注释,供参考:

#include<stdio.h>
void get_xy(double* x_p, double* y_p)
{
    printf("x_p..%p,y_p..%p\n", x_p, y_p);
    //printf("x_p..%p,y_p..%p\n",*x_p,*y_p); 这样输出已经解引用了,输出的是x y 的随机值
    printf("&x_p..%p,&y_p..%p\n", &x_p, &y_p);

    *x_p = 1.0;
    *y_p = 2.0;
}

int main() {
    double x;
    double y;

    printf("&x..%p,&y..%p\n", &x, &y);

    get_xy(&x, &y);

    printf("x..%f,y..%f", x, y);
    return 0;
}