我有一个浮点数组,我通过一个函数获取它们的值,该函数接收一个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指针是个好主意吗?是否有一种更清晰的解除引用方式?
提前致谢。