C ++复制指针

时间:2016-02-26 05:13:42

标签: c++ pointers structure

我无法弄清楚复制指针的语法。

我如何制作theVar2=theVar

Struct MyStructureType {
    double* theVar2;
}

MyStructureType* myStruct;
double* theVar;

theVar = malloc(sizeof(double));


myStruct->theVar2 = theVar; //segfaults

4 个答案:

答案 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)

关于您的代码的几点:

  1. 错误使用mallocmalloc会返回void *,在使用之前,您应该像这样投出:

    double *myptr = (double*) malloc(sizeof(double));

  2. 在初始化之前尝试使用myStruct:您已声明myStruct是指向您的结构的指针,您需要先将其初始化,然后才能使用它。您的代码应如下所示:

  3. 在此处使用malloc,您可以/应该使用new。其他答案已经证明了这一点。

    Struct MyStructureType {
            double* theVar2;
        }
    
    MyStructureType* myStruct;
    double* theVar;
    
    myStruct = (MyStructureType*) malloc(sizeof(MyStructureType));
    theVar = (double*) malloc(sizeof(double));
    
    myStruct->theVar2 = theVar;