是否可以将char指针指定给浮点值?

kap*_*dit 2 c pointers char floating-point-conversion

我试图在Visual Studio中执行以下代码:

int main()
{
    float f1 = 15.23;
    char *ptr = &f1;

    printf("%c", *(ptr));

    getch();
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

编译错误:错误C2440:'初始化':无法从'float*__ w64'转换为'char*'

这有什么具体原因吗?为什么不允许这样做?

Ker*_* SB 5

您确实可以将每个对象视为一个字符数组.但是,您必须显式地转换指针:

float f = 1.5f;

char const * p = (char const *)&f;

for (size_t i = 0; i != sizeof(float); ++i)
{
    printf("The byte at position %zu has value %d.\n", i, (int)p[i]);
}
Run Code Online (Sandbox Code Playgroud)

  • +1漂亮的转储循环.`C99§6.3.2.3,p7`和`C99§6.5.4`如果有人认为这是坏的(它不是). (2认同)