我是C世界的新人,我想澄清关于链接列表的一些观点。
我想在由以下结构组成的列表上创建一个循环:
typedef struct _mystruct{
int data[10];
struct _mystruct *prev;
struct _mystruct *next;
} MyStruct;
我看到的例子是:
void myFunction(MyStruct **list){
MyStruct *tmp = *list;
while(tmp){
// instructions;
tmp=tmp->next;
}
}
为什么会这样?影响*list
到tmp
后,它不会同时更改*list
,成为指针吗?并不是list
指出最后一次出现?如果是这样,为什么我们不在while循环中直接使用*list
?
提前感谢您的宝贵帮助!
答案 0 :(得分:0)
该分配会将tmp
初始化为值*list
的副本。虽然tmp
和*list
最初指向同一个对象,但它们本身是不同的指针对象,而更改它们不会影响另一个。
它可能会帮助你直接制作一个typedef;以下版本的myFunction
与您在帖子中写的相同:
typedef MyStruct *pMyStruct;
void myFunction(pMyStruct *list){
pMyStruct tmp = *list;
while(tmp){
// instructions;
tmp=tmp->next;
}
}