如图,指针在进入函数前后的值不同,不知道为什么。求大神解答
第二次p0的sno未进入前是123,进入函数后,就变成234了,然而我并没有进行赋值操作。
为题主补充了代码,并增加了一点指针地址的输出。
#include
typedef struct student
{
struct student *next;
int sno;
} Stu;
Stu* insert(Stu *node, Stu stu)
{
if(node != NULL)
{
printf("insert func, %d, %p\n", node->sno, node);
}
Stu *p0, *p1;
p0 = node;
p1 = &stu;
if( p0 == NULL )
{
node = p1;
p1->next = NULL;
}
else
{
while(p0->next != NULL)
p0 = p0->next;
p0->next = p1;
p1->next = NULL;
}
return node;
}
int main()
{
Stu *p0 = NULL;
Stu p1, p2;
p1.sno = 123;
p2.sno = 234;
p2.next = NULL;
printf("p1 %p, p2 %p\n", &p1, &p2);
p0 = insert(p0, p1);
printf("after first insert, %d\n", p0->sno);
insert(p0, p2);
}
某个可能的输出:
p1 0x28cc64, p2 0x28cc5c
after first insert, 123
insert func, 234, 0x28cc44