将指针浮动为void,然后将其引用再次浮动

时间:2017-11-27 15:22:57

标签: c pointers

我有一个浮点数组,我通过一个函数获取它们的值,该函数接收一个void指针并将数据写入指针。 (我的想法是不仅仅是用它 花车)

float fArray[3];

GetValue( fArray ); //this function makes the filling

printf( "IN:%f\n", fArray[0] );
printf( "IN:%f\n", fArray[1] );
printf( "IN:%f\n", fArray[2] );

fArray[0] = *( (float *) fArray );
fArray[1] = *( (float *) fArray + 4 );
fArray[2] = *( (float *) fArray + 8 );

printf( "DEREF:%f\n", fArray[0] );
printf( "DEREF:%f\n", fArray[1] );
printf( "DEREF:%f\n", fArray[2] );

的GetValue:

void GetValue(void * array ){
    for ( BYTE i = 0; i <  MAX_POINTS; i++ ) {
        float f = dataRegisters[i].fData;
        memcpy( array + sizeof(float)*i, &f, sizeof(float) );
    }
}

此代码的输出为:

IN:677.000000
IN:0.000000
IN:0.000000
DEREF:677.000000
DEREF:23.600000
DEREF:58.299999

为什么会这样?使用void指针是个好主意吗?是否有一种更清晰的解除引用方式?

提前致谢。

0 个答案:

没有答案