所以我有函數top()返回堆棧的頂部(實現爲鏈表)。它返回一個Node結構。當我嘗試訪問返回結構的變量時,出現錯誤。訪問返回的結構變量
typedef struct nodeStrcut{
int x,y;
struct nodeStrcut* next;
}Node;
Node top(Node** head){
return **head;
}
void push(Node** head, int x, int y){
//create a new node to contain the value
Node* newPtr = (Node*) malloc(sizeof(Node));
newPtr->x = x;
newPtr->y = y;
newPtr->next = *head;
*head = newPtr;
}
int main(int argc, char **argv){
Node* stack;
stack = NULL;
push(&stack, 3, 3);
push(&stack, 2, 3);
push(&stack, 3, 5);
printf("Node value: %d, %d\n", (pop(&stack)).x, (pop(&stack)).y);
return -1;
}
然後我得到以下錯誤:
project.c: In function ‘main’:
error: request for member ‘x’ in something not a structure or union
error: request for member ‘y’ in something not a structure or union
我知道,我可以用重新建立了新> X要獲取值,但我需要有從的停止返回值的函數疊加。幫助將不勝感激。
你爲什麼不返回一個指針一個節點? –
'(pop(&stack))。x'->'(top(&stack))。x'? –
你沒有在顯示的代碼中聲明'pop()'(你已經定義並因此聲明瞭'top()')。你有不確定的行爲,因爲你在參數列表中調用了兩次'pop()'到'printf()',並且你不能確定調用哪個順序。'top()'函數可以被安全地調用兩次;它會每次都返回相同的值,直到其他內容改變堆棧。 –