C++中的函数参数有三种传递方式:值传递、指针传递和引用传递。。。
今天看数据结构,有一个建链表函数调用
void InitList(sNode*&HL)
{
HL=NULL;
}
难道这是指针引用??????不是用指针就行了么,为什么还要加上一个引用符号,请明示下,谢谢。。。
单独指针仿行只是传递的指针的值,指针形参的变化与调用的凳袭实参无关,只有用指针的引用才能将函数体内的初始化值传枣大兄递回去
上面的程序,说白了还是指针,只不过是二级指针,看以下例子:
void allocMem1(unsigned char** buf)
{
*buf = new unsigned char[100];
memset(*buf, 0, 100);
}
void allocMem2(unsigned char *&buf)
{
buf = new unsigned char[100];
memset(buf, 0xff, 100);
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char *p1, *p2;
allocMem1(&p1);
allocMem2(p2);
}
可以发现,,函数2的效果与第一个函数是一样的,,,只不过在调用时樱穗知,还有在函数体内部,把一级指针当成是一个值类型了族虚,,但是其实就效果而言,与引用时一样的。
有点拗口,这个叫引用的指针,,比直接写二级指针可能要安全一点吧,,不过微软可不这么认为,com中都是用二级指针的,,二级指针的作用不是修改指针的内容而脊消是修改指针本身,,,
二维指针的引用
ewq