双指针结构

时间:2012-02-10 16:37:09

标签: c++ c

我正在尝试使用指向结构的双指针。构建成功,但在运行时,它会出现以下错误:

  

运行时检查失败#3 - 正在使用变量'test2'而未进行初始化。

代码是:

testStructure* test1 = (testStructure*)malloc(sizeof(testStructure));
testStructure** test2 ;
test1->Integer = 1;
test1->Double = 4.566;
*test2 = test1;

结构是:

typedef struct{
  int Integer;
  double Double;
} testStructure;

我哪里错了?

3 个答案:

答案 0 :(得分:13)

*test2 = test1;   // test2 is pointing no where to get dereferenced.

必须是

test2 = &test1;

答案 1 :(得分:1)

您需要test2 = &test1 - 即test2是指向test1

的指针的地址

答案 2 :(得分:0)

指针test1是指向内存中结构的指针。如果你需要另一个指向同一结构的指针,那么testStructure *test2 = test1就足够了。如果要间接修改test1中存储的地址,请使用testStructure **test2 = &test1,以便test2将指向指向结构的指针。在您的代码中*test2 = test1尝试访问任意地址(test2的初始值)并将其值设置为结构的地址。