關于指針和引用一直是學習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的初始化和通過指針對數組的訪問