Проблема в том, что код C, который вы сравниваете с C ++, на самом деле не аналогичен. Лучшим примером будет
typedef struct Node {
int data;
struct Node* pNext;
} Node;
typedef struct Stack {
Node* pHead;
} Stack;
void push(Stack* this, int data) {
Node* newNode = malloc (sizeof (Node));
newNode->data = data;
newNode->next = this->head;
this->head = newNode;
}
В этой версии мы успешно реализовали push
без необходимости брать **
за голову. Мы имеем в виду, потому что это двойное обращение через Stack*
. Но это очень похоже на то, как работает C ++. Можно рассматривать C ++ как передачу this
как скрытый аргумент функции.