关于指针和引用一直是学习C++的同学们争论的焦点,什么时候用指针,什么时候用引用,还有怎么引用数组,这么用指针访问数组,以及初始化的问题。
不过有一些文章我在很早就已经写过,但是由于当时时间不充分,自己也都是随性写的,可以参看以前我的一个文章:http://blog.csdn.net/pbymw8iwm/article/details/8555197
这里就详细说一下:
1.关于引用和指针的初始化
首先没有空引用,一个引用必须代表某个对象,如果你有一个变量,目的用来指向领一个对象,但是它有可能不指向任何对象。
程序为指针分配内存空间,但是引用不需要分配内存空间。
比如这样的例子,
int a = 0;
int* p = NULL;
int& pref= *p;
p = &a;
上面的这段代码,相信你心里有数了,这个例子告诉我们指针可以被重复赋值,执行另外一个对象,但是引用却总是执行他最初获得的那个对象,所以第三行的代码你将会得到一个无效的引用,即使后来p已经指向了a的地址。
到这里就不得不再说一下指针和引用去访问数组了,并且分别用他们初始化数组的方式了:
int main() {int a[10]={1,2,3,4,5,6,7,8,9,0};int (*pa)[10] = &a;printf("%d",(*pa)[8]);
}
这个是对指针pa的初始化和通过指针对数组的访问