我正在用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;
}
答案 0 :(得分:3)
有两件事是错的:
您正在取消引用空指针。
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;