我得到這個奇怪的副作用,而在我用C編寫的代碼中使用運算符' - >'。我使用的指針 - > on,被改爲有一些垃圾。奇怪的副作用使用運算符' - >'在c
更具體地說:
我有以下結構:
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;
}
當我用調試器我想通了在標記的上述行上指針列表 - >頭部被改變。
我真的不知道爲什麼,我不知道「 - >」可以有副作用
在此先感謝
很可能你誤解了發生的事情。 – NPE 2011-04-21 20:34:05
不, - >在C中沒有副作用。爲什麼不只是做'return list-> head-> data'? – Brad 2011-04-21 20:34:22
這是你的代碼,而不是' - >'的「副作用」。這很確定。 – meagar 2011-04-21 20:34:27