函数传参(指针)问题

来源:互联网 发布:杭州电信网络缴费电话 编辑:程序博客网 时间:2024/06/01 08:09

复习C语言的时候

自己写了个简易的学生管理系统

双链表写的

测试的时候发现删除第一个(头)的时候总是出错

后来是看了下是双链表指向问题

可是删除成功了,在输出显示的时候又出错了.

我明明把两头的指向都做好了啊.

后来才知道自己疏忽了函数传参的问题(传的是结构体指针).

比如这段代码

void test( struct LNode *pHead ){struct LNode * pTemp = NULL;pHead = pTemp;}

无返回的值,我本来是想把第一个节点删除的,然后把头pHead重新指向.

这就是我疏忽的地方,在test函数里我传过去的参数只是一个地址.

在函数里接收参数的是一个新建的指针pHead

不是main()里的头pHead指针.

导致我在修改头pHead指向的时候只是把test函数里的pHead指向了别的数据,并没有修改到main()里的头pHead

所以在输出的时候还是用原来的头pHead这个节点指针(出错是因为原头pHead的数据被修改了)


struct LNode * test( struct LNode *pHead ){struct LNode * pNew = pHead;//比如这里是删除第一个节点的代码,需要从第一指向第二就必须返回已经指向了第二个节点的pNewreturn pNew;}

这里返回pNew是一个新的节点(在函数里修改后的节点)
在main()里用pHead来接收这个返回值的话才可以正确的修改到头pHead.



	
				
		
原创粉丝点击