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++头部是栈类的私有或受保护成员,并声明为node * head。c&C++中的指针操作
问题:为什么head可以在C++的push()调用后保留它的值。
在c中,我们需要声明它为**,因为我们想在push()函数调用后改变头指针的值。在C++代码中,调用后不会更改头部丢失吗?
推测head是该类的成员变量。你从中学到了哪一本C++书不包括这个? – 2011-05-25 20:44:46
很多年前我读过C++,但从未使用过。那时我用蓝色封面书。我主要使用c,但也很少。顺便说一句,这是我在这里的第一篇文章,我非常感谢社区如何回应! – user770284 2011-05-25 20:54:39