gpt4 book ai didi

C编程...链表指针迭代

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:43 24 4
gpt4 key购买 nike

您好,我定义了以下函数:

head();
traverse(struct *);

我担心在遍历列表时它正在被修改。

void tail()
{
n3.next = (struct entry*) 0xff;
}

void traverse(struct entry *listPt)
{
while(listPt != (struct entry *) 0xff)
{
printf("%i\n", listPt->value);
listPt = listPt->next;
}
}

我应该使用不同的算法来迭代列表吗?复制列表是否更有利?

while 循环中的以下表达式是否覆盖了现有(值)内存?

listPt = listPt->next;

最佳答案

该语句仅覆盖声明为函数参数的局部变量 listPt

struct entry *listPt

它不会修改列表本身。

函数参数是它的局部变量。该函数处理其参数的副本。参数的任何改变都不会影响相应的参数。

考虑

#include <stdio.h>

void func( int *p )
{
int y = 20;

p = &y;

printf( "%d\n", *p ); // prints 20
}

int main( void )
{
int x = 10;
int *px = &x;

printf( "%d\n", *px ); // prints 10;

func( px );

printf( "%d\n", *px ); // prints 10;
}

关于C编程...链表指针迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33502103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com