C中指针类型转换(int到double)的核心转储

jai*_*led 2 c

我遇到了这段代码:

void incme(double *p)
{
    *p += 1;
}

int i = 1;
incme((double *)&i);    /* WRONG */
Run Code Online (Sandbox Code Playgroud)

当我尝试执行它时,我得到核心转储.这段代码有什么问题.我们可以不输入强制转换为double类型的int指针.

谢谢.

Car*_*rum 7

你没有投出int一个double,你正在int *投入一个double *.如果sizeof(double)sizeof(int)不一样那就不安全......

即使您匹配存储大小,您对输出的期望是什么?浮点类型和整数往往没有任何类型的兼容表示.