从struct转换为float *

时间:2013-11-25 17:56:14

标签: c++ matrix struct floating-point

我有一个结构

typedef struct
{
    float   m[4][4];
} myMatrix;

由于需要程序,我需要将其转换为float *

我这样做

if(! g_Fvar16)
    g_Fvar16 = (float*)malloc(sizeof(float) * 16);
memcpy(&g_Fvar16, &struct_var, sizeof(float)*16);
return g_Fvar16;

这是一个简单的功能。现在,从我调用此函数的地方,程序在访问这些值时崩溃。 g_Fvar16float*

sizeof(struct_var)为64,分配的内存量也是如此。

我不能简单地将复制的内存视为float *吗?我认为这将是最快的..

2 个答案:

答案 0 :(得分:4)

g_fVer16已经是指针,所以你必须写

memcpy(g_Fvar16, &struct_var, sizeof(float)*16);

而不是

memcpy(&g_Fvar16, &struct_var, sizeof(float)*16);

(请注意第一个&

答案 1 :(得分:3)

你可以使用

float *ptr = &(struct_var.m[0][0]);

用于“转换”。

您甚至可以避免执行复制,只需将程序传递给已转换的指针(但这需要您正确处理生命周期,即struct实例应保持活动足够长的时间以使函数使用数据)