首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

pointer &跟pointer这两种函数形参有区别吗

2014-01-14 
pointer &和pointer这两种函数形参有区别吗?因为你概念根本没搞清T *和T &做参数才有类似的作用,但你举的

pointer &和pointer这两种函数形参有区别吗?
因为你概念根本没搞清
T *和T &做参数才有类似的作用,但你举的例子是T *& 和 T *,你说能一样吗?换句话说你把NodePtr& head改成NodePtr *head才是实现类似的功能。
说白了用NodePtr &作参数就是为了能在函数中直接修改head这个指针本身所指向的地址,如果你传入NodePtr,那也只是传入一个指针副本,只不过这个副本所指向的地址和你的参数指向的地址相同。你能通过这个副本修改指针所指向的内容。但你那句
head = head->link;是直接将head这个参数的指向都变了
[解决办法]
实参是指针,形参是指针,同样会产生拷贝,不用怀疑
实参是地址,形参是指针才能避免问题
[解决办法]

引用:
对了,Node的结构如下:

struct Node
{
    int data;
    Node* link;
};


听前辈是不会有错滴,莫要钻牛角尖~
[解决办法]
void get_mem(char* p)
{
     p = new char[10];
}

void get_mem(char* &p)
{
     p = new char[10];
}

测试下这两者的区别,印象会深刻点

[解决办法]
传指针只能改变指针指向的地址中存储的值。传指针引用的话还能够改变指针本身指向的位置。
[解决办法]
引用与值传递不等价。

引用可以“向上传递”,而值不可以。 
[解决办法]
当然不一样。就是传引用和传值的区别啊。

热点排行