[英]Passing a struct pointer to a function in C
我無法將結構傳遞給以結構指針作為參數的函數,並不斷收到錯誤“錯誤:一元'*'(具有'StackNode')的無效類型參數”
這是我的代碼的必要部分(不是全部):
#include <stdio.h>
#include <stdlib.h>
struct stackNode{
char data;
struct stackNode *nextPtr;
};
typedef struct stackNode StackNode;
typedef StackNode *StackNodePtr;
void convertToPostfix(char infix[], char postfix[]);
int isOperator(char c);
int precedence(char operator1, char operator2);
void push(StackNodePtr *topPtr, char value);
char pop(StackNodePtr *topPtr);
char stackTop(StackNodePtr topPtr);
int isEmpty(StackNodePtr topPtr);
void printStack(StackNodePtr topPtr);
int main(){
convertToPostfix(NULL, NULL);
return 0;
}
void convertToPostfix(char infix[], char postfix[]){
StackNode stack = {'(', NULL};
push(*stack, 'a');
printStack(&stack);
}
void push(StackNodePtr* topPtr, char value){
topPtr->nextPtr = NULL; //just temporary, not needed
topPtr->data = value; //just temporary, not needed
}
任何幫助將不勝感激,謝謝
更改push
調用push(*stack, 'a')
:
push(&stack, 'a');
^
stack
間接stack
( *
)沒有意義,因為它不是指針。 取其地址( &
)。
由於StackNodePtr已經是指向StackNode的指針,因此在參數列表中不需要更多的“ *”。
全部替換
void push(StackNodePtr* topPtr, char value){ // WRONG
^^^
至
void push(StackNodePtr topPtr, char value){ // RIGHT
^^^
我認為您的編譯器很聰明。 它知道空指針(NULL)與StackNodePtr是不同的東西。 您需要對調用進行強制類型轉換,或者對null的stacknode指針值進行定義。
NULLSNP=(StackNodePtr)NULL;
正如另一篇文章所述,推的調用也是錯誤的,應該是&而不是&。
push(&stack, 'a');
push和pop的定義是錯誤的,您給它一個stacknodeptr,但是希望有一個stacknodeptr指針。
void push(StackNodePtr topPtr, char value)
char pop(StackNodePtr topPtr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.