有人可以解释一下吗?

Sam*_*amy 5 c printf sizeof

我真的不明白这一点.也许有人可以解释我.我想知道dataInput中有多少个元素.我在C编程

void Calibrate_data(float* dataInput)
{   
    int dataSize = sizeof(*dataInput)/sizeof(float);
    printf("%i and %i",sizeof(*dataInput)/sizeof(float),dataSize);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

1 and 10
Run Code Online (Sandbox Code Playgroud)

Sha*_*our 4

这是错误的格式说明符:

printf("%i and %i",sizeof(*dataInput)/sizeof(float),dataSize);
        ^^
Run Code Online (Sandbox Code Playgroud)

sizeof返回size_t符号类型,正确的格式说明符是Visual Studio 中的或。%zu%Iu

使用错误的格式说明符会调用未定义的行为,但这似乎无法解释10for的输出dataSize没有意义,因为sizeof(*dataInput)将是 a 的大小float。因此,我们预计sizeof(*dataInput)/sizeof(float)1正如 Macattack 所说,SSCCE 应该有助于解决该输出问题。