struct node {
int data;
struct node* next;
}
void push (struct node **head, int data) {
struct node* newNode = malloc (sizeof (struct node));
newNode->data = data;
newNode->next = *head;
*head = newNode;
}
//I understand c version well.
C++ version
void Stack::push( void *data ) {
struct node *newNode = new node;
newNode->data = data;
newNode->next = head;
head = newNode;
}
在C++中,head是stack类的私有或受保护成员,并声明为node *head。
问题:为什么在C++中push()调用后head可以保留其值。
在C中,我们需要将其声明为**,因为我们想要在push()函数调用后更改head指针的值。在C++代码中,对head的更改不会在调用后丢失吗?