我是C ++的新手,需要一些帮助。 我有以下代码:
struct Force {
float X[10];
float Y[10];
float Z[10];
};
struct Measurement{
char serial_number[30];
struct Force F1;
struct Force F2;
};
我应该如何正确分配以下内容?
struct Measurement meas
问题是结构力部队工作正常;但是,当我尝试定义struct Measurement meas时,我得到“Unhandled exception”错误!
答案 0 :(得分:2)
正如我在你的问题中所看到的,你正在使用C,所以这里是C的解决方案。
只要您想拥有结构测量实例,只需输入:
即可struct Measurement meas;
您将能够以下列方式访问您的结构元素:
meas.F1.X and so on...
如果您希望动态分配(即在运行时),那么只需使用malloc / calloc,如下所示
struct Measurement *meas = (struct Measurement *)malloc(sizeof(struct Measurement));
这样做,您将必须访问您的结构元素:
meas->F1.X and so on...
答案 1 :(得分:1)
从技术上讲,它就像你写的一样,但成员上不需要结构词(实际上会产生警告但是有效。)
struct Force {
float X[10];
float Y[10];
float Z[10];
};
struct Measurement {
char serial_number[30];
Force F1;
Force F2;
};
然后在函数使用中这样:
Measurement somevar;
somevar.F1.Y = 999;
现在正确的方法(并保存堆栈)是使用指针。
struct Measurement {
char serial_number[30];
Force* F1;
Force* F2;
};
然后:
Measurement* m = new Measurement;
if (m) {
m->F1 = new Force;
m->F2 = new Force;
}
使用后必须删除所有指针以避免内存泄漏:
delete m->F1;
delete m->F2;
delete m;
还有另一种方法。使用:
struct Force {
float X[10];
float Y[10];
float Z[10];
};
struct Measurement {
char serial_number[30];
Force F1;
Force F2;
};
您可以使用malloc分配一些内存并将其视为struct(没有时间对其进行测试,但我多次使用该方法)。
Measurement* m = (Measurement*)malloc(sizeof( size in bytes of both structs ));
// zero memory on m pointer
// after use
free(m);
这就是全部。
答案 2 :(得分:0)
C:
struct Measurement *meas;
meas=(struct Measurement *) malloc(sizeof(Measurement));
^ ^
| |
| |
this is shape this is the space allocated
C ++:
Measurement *meas;
meas=new Measurement;