指针的引用

2012年01月02日 分类:学习笔记C++C#

MFC真是博大精深,看了下比较复杂的类就快晕掉了,上网查了下才发现是指针的引用。

对于c语言,最最精华的部分就是指针了,然而最难学的也是指针,当然了还有引用。

指针(*)可以理解为指向变量或函数的变量,里面放的是变量或函数的地址。引用(&)的话是变量或函数的别名,没有实际存储空间。

单单两个分开看的话还是比较好理解的,但混到一起就有点难度了,特别是到MFC这种里面类超复杂的时候。

在MFC中经常看到引用作为参数传到函数中,毕竟MFC中大部分都是类,传递类的引用还是比较方便的。但有些数据是指针类型的,因此传入函数的是指针的引用,比如void function( int *& s)这种。一开始看起来特别别扭,int *不是指针吗,怎么变成引用了。其实引用就是别名的意思,比如你定义一个int型的引用int &s=x ,x是int型的,s作为x的引用那肯定也应该是int型才对。然后再回到上面那个函数,把他拆分一下int* &s,这样就清楚了,int*是int型的指针,定义的是s,而s又是指针的引用,因此前面有&,这样就说的通了。还有一些更变态的写法,比如int** &s,说的是指向指针的指针的引用,指向指针的指针表示为int**,再引用前面加个&,理解了之后就变的很简单,呵呵。

那有了指针的引用后有没有引用的指针呢?答案是否定的,这是因为指向引用的指针是非法的,是没意义的。引用就是变量的别名,既然有变量干嘛还要指向他的引用呢,再说了引用一旦初始化就恒定了,也可以说是一个常指针,指向常指针的指针就更没意义了。

以上只是我个人的看法,希望在学习中能更好地了解指针更多的用法。

作者:wuyuan 本文来自Wuyuan's Blog 转载请注明,谢谢! 文章地址: http://wuyuans.com/2012/01/point-and-reference