指针 改变坐标 c语言,c语言指针进入函数后指针值发生改变

如图,指针在进入函数前后的值不同,不知道为什么。求大神解答

bVtfq3

第二次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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值