【发布时间】:2014-05-27 08:14:24
【问题描述】:
在为链表编写添加函数时,我想到了以下代码
int addNode(node ** head)
{
1. node * ptr = *head;
if(ptr==NULL)
{
ptr = (node *)malloc(sizeof(node));
ptr->next = NULL;
ptr->val = (char *)malloc(10);
strcpy(ptr->val,"1");
2. *head = ptr;
}//Rest omitted
现在就我对指针指针的理解而言,当我调用这个函数时
添加节点(&n)
(n 定义为 node * n) 我发送指针 n 的地址。头 = &n 到现在为止?在 1 处,我将 ptr 指向 n,即 ptr = &n?那正确吗?我不明白为什么我需要设置 *head = ptr? ptr 不是已经直接对 n 进行更改了吗?而且 ptr 和 *head 不都指向 n 吗?
谢谢!
【问题讨论】:
标签: c pointers memory-management linked-list pointer-to-pointer