【发布时间】:2013-09-13 15:54:14
【问题描述】:
我正在编写一个函数来查找链表的长度。我的问题特定于指针的声明。
int lengthOfLinkedList(Node *head)
{
Node* current = head;
}
vs.
int lengthOfLinkedList(Node *head)
{
Node* current = NULL;
current = head;
}
所以这是我的理解: 在第一个示例中,声明了一个指向 Node 对象的指针,它取消了对头指针地址的引用。
|内存地址 |
这不是我想做的。相反,我想尊重指针,以便我可以访问它指向的节点(这是我在第二个代码 sn-p 中所做的):
|数据| *下一个|
所以现在我认为指针在初始化它们时的行为会有所不同——你可以在使用 ('*') 运算符初始化它时直接声明指向内存地址的指针,但在初始化后你不能再这样做了。这很奇怪..
我是对的还是发生了其他事情?
【问题讨论】:
-
第一个用
head中的值初始化current。第二个使用值NULL初始化current,然后将head中的值分配给current。 -
current是“指向节点的指针”类型。两个代码 sn-ps 都做同样的事情。声明中第一个初始化的“current”。第二个首先将“current”初始化为 NULL,然后在赋值语句中将其重置为“head”。 -
请记住,指针仍然由一个值(内存地址)表示,
current的值在任何一种情况下都将等于head的值。