引用和指針的差別 |
1、不存在空引用。引用必須連接配接到一塊合法的記憶體。
2、一旦引用被初始化為一個對象,就不能被指向到另一個對象。指針可 以在任何時候指向到另一個對象。
3、引用必須在建立時被初始化。指針可以在任何時間被初始化。
下面用代碼來說明一下 |
#include <stdio.h>
#include <tchar.h>
#include <iostream>
using namespace std;
int main ()
{
// 聲明簡單的變量
int i=;
// 聲明引用變量
int &r = i;
// 聲明指針變量
int *a = &i;
//列印值
printf("i = %d\n",i);
printf("r = %d\n",r);
printf("a = %d\n",*a);
//列印位址
printf("i的位址是:%p\n",i);
printf("r的位址是:%p\n",r);
printf("a的位址是:%p\n",a);
printf("a裡面的内容的位址是:%p\n",*a);
return ;
}
輸出結果 |
i =
r =
a =
i的位址是:
r的位址是:
a的位址是:FBE4
a裡面的内容的位址是:
說明 |
從結果可以看出,通過引用和指針都可以獲得 i 的值。
但是,引用的位址與變量位址一樣,而指針與變量位址不同,指針裡存放的是變量的位址。
可以把引用看成是變量的别名,而指針有自己的位址,它隻是存儲着變量位址。