假设我有以下链表结构:
struct linked_list
{
struct linked_list *next;
int data;
};
typedef struct linked_list node;
以及打印链表的以下函数:
void print(node *ptr)
{
while(ptr!=NULL)
{
printf("%d ->",ptr->data);
ptr=ptr->next;
}
}
现在在main()
我写这个的函数中:
print(head); // Assume head is the pointer pointing to the head of the list
这本质上是按值调用。因为ptr
inprint
会收到一份head
. 而且我们不能head
从print()
函数中修改,因为它是按值调用的。
但我的疑问是,既然ptr
收到了一份head
但它能够打印出链表的值。那么这是否意味着该print()
函数接收链表的整个副本?如果它没有收到链表的整个副本,它如何能够打印链表?