我有一个包含两个指针的结构,< head,iterator>两个指针指向另一个结构 - 节点。
typedef struct Map_t {
Node head;
Node iterator;
} Map_t;
typedef struct Node_t* Node;
struct Node_t {
MapDataElement Data;
MapKeyElement Key;
struct Node_t *next;
};
typedef struct Map_t *Map;
我想让 iterator 指针指向与 head 相同的位置。在跑完线之前和之后的负债:
行前
行
正如您所看到的,在运行该行之后,map->迭代器仍然指向0x0 ..为什么会这样?
答案 0 :(得分:1)
看来指针分配已经发生,如第二张图片所示,它强调了对map->iterator
成员的更改。我想象方法运行完成,返回指针0x9918f0
。
这让我相信你实际上并没有遇到指针赋值失败,而只是在调试器(Eclipse)中显示更新值的失败。这可能是由于Eclipse中的错误,或者可能是由于Eclipse可用的调试信息不足。仅用给出的例子很难说。