C++引用和指標

LTQblog發表於2017-06-19

作者:tongqingliu
轉載請註明出處:http://blog.csdn.net/qq_22186119/article/details/73476808

C++引用和指標

C++引用

引用的基本用法:

int a = 12;
int &b = a; // b指向a,b是a的引用,b是a的別名

下面看一個例項:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    int val = 123;
    int &refval = val; //refval是val的別名

    cout << "val=" << val << endl;
    cout << "refval=" << refval << endl;

    refval = 0;
    cout << "val=" << val << endl;
    cout << "refval=" << refval << endl;

    system("pause");
}

程式輸出:

val=123
refval=123
val=0
refval=0
請按任意鍵繼續. . .

引用其實就是給物件起一個別名,比如張明的別名是小明,那麼你打張明和打小明都是一個意思,打的都是同一個人。
但是有幾點需要注意:
- 引用必須初始化,int &val;錯。
- 引用型別的初始值必須是一個物件,而不能是個數int &val = 1;錯。
- 引用和引用的物件必須同一型別,double a = 1.2; int &val = a;錯。
- 引用不是物件,不能定義引用的引用,int a = 1; int b = 2; int &c = a; int &c = b;錯。

指標

和引用一樣,指標可以間接訪問其他物件。
指標的特點:
- 指標本身就是一個物件,可以賦值也可以拷貝,也可以先後指向不同的物件。
- 指標在定義時可以不賦值。

指標的基本用法;

int *ip1, *ip2;//宣告指標,ip1和ip2都是指向int型物件的指標
double dp, *dp2;//dp是double型物件,dp2是指向double型物件的指標
int ival = 32;
int *p = &ival;//p是指向變數ival的指標,p存放變數ival的地址

上面最後一行,p存放變數ival的地址,*p表示ival的值(*是解引用符),&ival表示取ival的地址。

#include<iostream>
using namespace std;
int main()
{
    int val = 123;
    int *pval = &val;
    cout << "val=" << val << endl;
    cout << "pval=" << pval << endl;
    cout << "&val=" << &val << endl;
    cout << "*pval=" << *pval << endl;

    system("pause");
}

程式執行結果:

val=123
pval=00A2FBE0
&val=00A2FBE0
*pval=123
請按任意鍵繼續. . .
  • 引用不是物件,沒有實際地址,不能定義指向引用的指標。
  • 指標型別必須和所指向物件的型別一樣。

參考:
C++ primer 第五版

相關文章