今天和牛人同事cml讨论指针引用(其实是他告诉我的),像下面代码:
void p = NULL;
int pi = NULL;
pi = (int )p;
这个我想大家都知道,再来:
void p = NULL;
int pi = NULL;
(void &)pi = p;
哈哈,其实和上面是一样的,为什么呢?我开始也没反应过来,后来cml说(void )pi后是一个临时变量,所以要再引用一下才能改变实际的值。就像swap(int &i, int &j)这样,但上面的例子还是建议写成右值版本而不是左值版本。
这样的话,之前所说的一个myfree3版本可以这么写,当然要C++哦,因为C里是没有引用这个概念的:
myfree3(int
&p){
free(p);
}
也是行得通的,得益于引用这个东东。