当前位置 博文首页 > jtwqwq的博客:关于C/C++中结构体指针作为形参传入函数,为什么
主函数传入函数的变量叫实参,而函数中的对应变量叫形参。形参实际上是实参的拷贝,所以如果我们修改形参的值,实参不会发生变化。
后来学习了指针,指针就相当于钥匙,能打开对应房间(地址)的门。当指针作为函数参数时,实参和形参相当于拷贝的两把钥匙,但他们都指向同一个房间,同一个地址。借由形参访问地址,并改变地址中的值,能够真正修改地址中的值。
而在学习结构体、链表时,常常进行的操作是对结构体指针赋值。
比如添加新链表结点add函数,先将新结点的内容赋给临时结构体指针p,然后将p的值赋给head或last->next.
head=p;//当head为NULL的时候
last->next=p;//当head不为NULL的时候
但是这样做并不会直接对主函数中的head指针进行修改,为什么?
因为我们修改的不是指针对应地址中的值,而是直接修改指针的值,改变了指针的指向。这就和修改普通变量一样,对形参的修改不会影响实参。
解决方法:(翁恺老师的建议)
&list
传入add函数,add的参数是list的指针,在函数中就可以对list->head进行修改。