全局指针变量怎么给结构体中的成员变量赋值

全局指针变量如何给结构体中的成员变量赋值
#define TotalCountOfEachChannel 500
#define usChanNum 30
float *buffer;
struct ABC
{
  int a;
  int b
  float *c;
}
申请内存空间
buffer = (float *)malloc(TotalCountOfEachChannel *usChanNum * sizeof(float));
请问大虾们,如何将 *buffer里的数赋值给结构体中的成员变量 *c

------解决方案--------------------
额,我可能目前的问题就是这块
曾尝试将结构体内的指针改为容器:
std::map<int, float> c;
然后通过如下方式赋值,但是调用时同样报错了:
int Index = sizeof(buffer);
ABC abc;
for( int i=0; i<Index; i++ )
{
abc.c[i] = buffer[i];
}
看下高手如何解答?

------解决方案--------------------
觉得你基础有点问题,帮你定一个,你自己看看:
struct ABC
{
int a;
int b
float *c;
ABC()
{
c = (float *)malloc(TotalCountOfEachChannel *usChanNum * sizeof(float));
}
~ABC()
{
free(c);
}
}
这个时候,再这样用就不会出错,为什么??因为C已经分配空间的
ABC abc;
for( int i=0; i <Index; i++ )
{
abc.c[i] = buffer[i];
}
又或者是直接这样
memcpy(abc.c, buffer, Index*sizeof(float));
------解决方案--------------------
我不觉得这样有什么问题:
struct ABC
{
int a;
int b
float c[20];//前提是我需要的数据项不超过20个
}

赋值:
int Index = sizeof(buffer);
ABC abc;
for( int i=0; i<Index; i++ )
{
abc.c[i] = buffer[i];
}


不过楼上的方法很正统,我也尝试下

------解决方案--------------------
探讨

这样是可以赋值的,但是要将这些写入二进制文件中,感觉指针里面的东西就没有写入