pointer &跟pointer这两种函数形参有区别吗
pointer &和pointer这两种函数形参有区别吗?因为你概念根本没搞清T *和T &做参数才有类似的作用,但你举的
pointer &和pointer这两种函数形参有区别吗?
因为你概念根本没搞清
T *和T &做参数才有类似的作用,但你举的例子是T *& 和 T *,你说能一样吗?换句话说你把NodePtr& head改成NodePtr *head才是实现类似的功能。
说白了用NodePtr &作参数就是为了能在函数中直接修改head这个指针本身所指向的地址,如果你传入NodePtr,那也只是传入一个指针副本,只不过这个副本所指向的地址和你的参数指向的地址相同。你能通过这个副本修改指针所指向的内容。但你那句
head = head->link;是直接将head这个参数的指向都变了
[解决办法]
实参是指针,形参是指针,同样会产生拷贝,不用怀疑
实参是地址,形参是指针才能避免问题
[解决办法]
听前辈是不会有错滴,莫要钻牛角尖~
[解决办法]void get_mem(char* p)
{
p = new char[10];
}
void get_mem(char* &p)
{
p = new char[10];
}
测试下这两者的区别,印象会深刻点
[解决办法]传指针只能改变指针指向的地址中存储的值。传指针引用的话还能够改变指针本身指向的位置。
[解决办法]引用与值传递不等价。
引用可以“向上传递”,而值不可以。
[解决办法]当然不一样。就是传引用和传值的区别啊。