C语言函数名后面括号里的指针变量为何有时带星号有时不带?
上课时老师提供了一些function让我们在底下写完整,比如voidltq_rebut(ltq*s)是用free释放s链所占的空间的,这个时候的s就带星号.而用来快速排序...
上课时老师提供了一些function让我们在底下写完整,比如 void ltq_rebut(ltq *s) 是用free释放s链所占的空间的,这个时候的s就带星号. 而用来快速排序的void ltq_tri_rapide(ltq s) 里面s就不带星号,为什么呢? p.s. s是一个有头和尾的单向链表。
展开
1个回答
展开全部
因为释放空间对地址进行操作,需要参数是个指针变量,函数对链表所在地址进行操作
而排序函数对链表进行操作,需要参数是链表的本身的变量类型,函数对链表本身进行操作
而排序函数对链表进行操作,需要参数是链表的本身的变量类型,函数对链表本身进行操作
更多追问追答
追问
如果释放时需要指针变量的话,直接用s->tete不可以么? *s又代表什么呢? 谢谢 >_<
追答
我不知道你链表的结构体具体成员,所以不知道s->tete是什么,但函数的参数只是一个形参,是需要你传值的,那个*s就是一个你结构体类型的一个指针变量,具体是什么要依你传进去的实参是什么而确定
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询