指針與引用,取地址符與解引用符

指針與引用,取地址符&與解引用符*

引言

探討一下指針、引用、以及具有兩種意思兩個符號&和*

引用

引用相當於爲對象取一個別名,引用本身不是對象。定義方式:

int x=4;
int &y=x;//y爲變量x的引用,變量x有了另外一個名字y,可以通過y來間接訪問x

指針

指針也可以實現對對象的間接訪問,指針與引用有以下區別:

  • 指針本身就是對象
  • 指針無需在定義時賦初值

1.使用指針獲取對象的地址

int i=12;
int *p=&i;//指針p指向i,p的值爲i的地址

2.使用指針間接訪問

int i=12;
int *p=&i;//&爲取地址符
cout<<*p<<endl;//這裏*是解引用符

示例

通過下面的實例來理解指針與引用的區別,取地址符&引用的定義&
指針的定義*解引用符*

#include <iostream>
using namespace std;
int main(){
    //整型變量x
    int x=12;


    //x的引用y
    int &y=x;

    cout<<"x="<<x<<" "<<"y="<<y<<endl;
    //x=12 y=12

    y++;

    cout<<"x="<<x<<" "<<"y="<<y<<endl;
    //x=13 y=13

    //指向整型變量的指針p
    int *p;
    //p的值爲x的地址
    p=&x;//這裏&爲取地址符

    cout<<"x="<<x<<" "<<"y="<<y<<" "<<"p="<<p<<endl;
    //x=13 y=13 p=0x68fedc

    //地址p所指向的值變爲10
    *p=10;//這裏爲解引用符

    cout<<"x="<<x<<" "<<"y="<<y<<" "<<"p="<<p<<endl;
    //x=10 y=10 p=0x68fedc

    //p所指對象的引用爲z
    int &z=*p;
    z=14;
    cout<<"x="<<x<<" "<<"y="<<y<<" "<<"z="<<z<<" "<<"p="<<p<<endl;
    //x=14 y=14 z=14 p=0x68fedc

    //整型變量i
    int i=12;
    //指針q
    int *q;
    //指針q的引用r
    int *&r=q;
    //r指向i,也即q指向i
    r=&i;
    cout<<"i="<<i<<" "<<"q="<<q<<" "<<"r="<<r<<" "<<endl;
    //i=12 q=0x68fed8 r=0x68fed8

    //改變r指向的值
    *r=10;
    cout<<"i="<<i<<" "<<"q="<<q<<" "<<"r="<<r<<" "<<endl;
    //i=10 q=0x68fed8 r=0x68fed8
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章