指向struct的指针包含指针

时间:2013-12-18 11:50:26

标签: c++ pointers struct

我正在用c ++编写代码,但我的指针有问题,请帮助我!

错误是:Grid.exe中0x010613af处的未处理异常:0xC0000005:访问冲突读取位置0x00000004

#include <iostream>
using namespace std;

struct test{
    int test_num;
    int * test_ptr;
};

struct test1{
    int test1_num;
    test* test1_ptr;
};

void main()
{
    test1 tt;
    tt.test1_num=0;
    tt.test1_ptr=0;
    int  * t = tt.test1_ptr->test_ptr;
}

5 个答案:

答案 0 :(得分:3)

有两件事是错的:

  1. main必须返回一个int。
  2. 您正在取消引用空指针。

    int main()
    {
        test1 tt;
        tt.test1_num=0;
        tt.test1_ptr=0;
        int  * t // = tt.test1_ptr->test_ptr;
        return 0;
    }
    

答案 1 :(得分:3)

该行:

int  * t = tt.test1_ptr->test_ptr

取消引用空指针。您在行中将其设置为null:

tt.test1_ptr=0;

答案 2 :(得分:1)

如果tt.test1_ptr为0(即NULL),则无法遵循它,它是未定义的行为。

答案 3 :(得分:0)

而不是tt.test1_ptr->test_ptr,您应该使用tt.test1_ptr.test_ptr。 请记住,运算符->返回指针所指向的实际值,在您的情况下,地址0没有值/您无法访问该值。

答案 4 :(得分:0)

首先将test1_ptr初始化为0,然后在指向任何内容之前尝试取消引用它。

tt.test1_ptr=0;
int  * t = tt.test1_ptr->test_ptr;