在我用 C 编写的代码中使用运算符 '->' 时,我得到了这种奇怪的副作用。我使用 -> on 的指针被更改为有一些垃圾。
进一步来说:
我有以下结构:
typedef void* ListElement ;
typedef struct List_t* List ;
typedef struct Node_t* Node;
Struct Node_t {
ListElement data ;
Node next;
}
Struct List_t {
Node* head;
Node* current
}
当我使用以下内容时ListGetFirst()
,我会得到有线行为:
ListElement ListGetFirst(List list)
{
if( list == NULL || list->head==NULL)
{
return NULL;
}
list->current=list->head;
Node* head =list->head; // here is the problem
ListElement data = (*head)->data;
return data;
}
当我使用调试器时,我发现指针 list->head 在标记的上述行上发生了变化。
我真的不知道为什么,我不知道'->'会产生副作用
提前致谢