指针和引用的定义和性质区别

发布时间:2020-07-04 11:23:44 作者:银河星君
来源:网络 阅读:483

指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.

int a=1;int *p=&a;
int a=1;int &b=a;

上面定义了一个×××变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。

而下面2句定义了一个×××变量a和这个×××a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单元。

#include<iostream>
#include<string.h>
using namespace std;
void swap(char *&a, char *&b) /*使用引用指针做参数*/
{
    char *temp;
    temp=a; /*进行数值的交换*/
    a=b;
    b=temp;
}
void swap2(int *a,int *b)//传地址
{
    int temp=*a;
    *a=*b;
    *b=temp;
}
void swap3(int &c,int &d)//引用
{
    int temp;
    temp=c;
    c=d;
    d=temp;
}
int main()
{
    char *stra="one world"; /*字符串指针*/
    char *strb="one dream";
    int a=1,b=2;
    int c=3,d=4;
    cout<<"地址传递:"<<endl;
    cout<<"swap前:a="<<a<<" "<<"b="<<b<<endl;
    swap2(&a,&b);
    cout<<"swap后:a="<<a<<" "<<"b="<<b<<endl;
    cout<<"引用传递:"<<endl;
    cout<<"swap前:c="<<c<<" "<<"d="<<d<<endl;
    swap3(c,d);
    cout<<"swap后:c="<<c<<" "<<"d="<<d<<endl;
    cout<<"引用传递:"<<endl;
    cout <<"swap前stra: "<<stra<<endl; /*输出字符串*/
    cout<<"swap前strb: "<<strb<<endl;
    swap(stra,strb); /*传入地址*/
    cout<<"swap后"<< endl;
    cout<<"stra: "<<stra<<endl; /*输出字符串*/
    cout<<"strb: "<<strb<<endl;

    return 0;
}

指针和引用的定义和性质区别


1.用指针传递参数,可以实现对实参进行改变的目的,是因为传递过来的是实参的地址.

2.引用作为函数参数进行传递时,实质上传递的是实参本身,即传递进来的不是实参的一个拷贝,因此对形参的修改其实是对实参的修改,所以在用引用进行参数传递时,不仅节约时间,而且可以节约空间。

推荐阅读:
  1. 引用与指针的区别
  2. C++ 中的引用 和指针的区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c

上一篇:解决golang.org/x包无法下载的问题

下一篇:用js实现放大镜的效果

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》