-3
我對C非常陌生,我試圖完全理解它。我實現了一個堆棧 ,但在創建析構函數和構造函數/ init時遇到了麻煩。 這些做得好嗎? 這些是由堆棧中使用的結構類型定義:C中的析構函數和構造函數C
typedef struct Node{
void* cargo;
struct Node* next;
}Node;
typedef struct Stack{
int size;
Node* firstOut;
}Stack;
而這些功能:
void newStack(Stack* stack){
stack = (Stack*)malloc(sizeof(Stack));
stack->firstOut = NULL;
stack->size = 0;
}
void freeStack(Stack** stack){
empty((*stack));
free((*stack)->top);
(*stack)->size = 0;
free(stack);
}
我的問題是:他們做得好?具有適當經驗的人會如何做到這一點?
是否有任何特定的原因你的構造函數需要一個指針參數?通常情況下,帶指針的構造函數實際上是「初始化器」,因爲它們實際上不分配任何內存,只是將結構中的變量初始化爲默認值。 –
你的編譯器告訴你這個代碼是什麼?具體關於'free((* stack) - > top);'? – EOF
我想做很多堆棧 – patrol