我无法弄清楚复制指针的语法。
我如何制作theVar2=theVar
?
Struct MyStructureType {
double* theVar2;
}
MyStructureType* myStruct;
double* theVar;
theVar = malloc(sizeof(double));
myStruct->theVar2 = theVar; //segfaults
答案 0 :(得分:5)
Fist为MyStructureType
分配内存,然后使用其中的data member
。
MyStructureType* myStruct = new MyStructureType();
double* theVar = new double();
myStruct->theVar2 = theVar;
答案 1 :(得分:1)
在使用其值之前,必须将变量设置为某个合理的值。您尚未将myStruct
设置为任何合理的值。所以不要使用它。
您还没有theVar2
的任何实例。它是结构的成员,但尚未存在该结构的实例。你可以这样做:
MyStructureType myStruct;
myStruct.theVar2 = theVar;
MyStructureType
的实例存在后,您可以设置其theVar2
成员。
答案 2 :(得分:1)
您需要初始化myStruct
,然后才能间接通过它。
MyStructurType *myStruct = new MyStructureType;
答案 3 :(得分:1)
关于您的代码的几点:
错误使用malloc
:malloc
会返回void *
,在使用之前,您应该像这样投出:
double *myptr = (double*) malloc(sizeof(double));
在初始化之前尝试使用myStruct
:您已声明myStruct
是指向您的结构的指针,您需要先将其初始化,然后才能使用它。您的代码应如下所示:
在此处使用malloc
,您可以/应该使用new
。其他答案已经证明了这一点。
Struct MyStructureType {
double* theVar2;
}
MyStructureType* myStruct;
double* theVar;
myStruct = (MyStructureType*) malloc(sizeof(MyStructureType));
theVar = (double*) malloc(sizeof(double));
myStruct->theVar2 = theVar;