指针与引用,取地址符与解引用符

指针与引用,取地址符&与解引用符*

引言

探讨一下指针、引用、以及具有两种意思两个符号&和*

引用

引用相当于为对象取一个别名,引用本身不是对象。定义方式:

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;
}
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值