指针与引用

C++中指针和引用的应用很常见,连着的使用极易混淆,但是区别很明显:

1. 指针是变量,而引用只是变量的一个别名,而且引用使得别名与引用对象绑在了一起。
2.指针初始化之后还可以指向其他变量,但是引用只能初始化一次。
3.sizeof 操作的结果不一样,引用为所指向变量的大小,指针则返回指针本身的大小。
4. 引用不可以为空,但是指针可以是空指针。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<cstdio>
//引用的用法,引用就相当于给一个对象定义一个别名,作用在引用上的所有操作都与绑定的对象有关。
int main()
{
    int val = 11, val2 = 33;
    int &refval = val, &refval2 = val2; ///引用必须要初始化,使其绑定到一个变量上
    ///修改引用的值将改变其所绑定的变量的值
    refval = -22;
    printf("%d %d\n", val, refval);//输出为-22,refval的值和val一样
    refval = refval2;   //引用一但初始化(绑定),将始终绑定到同一个特定对象上,无法绑定到另一个对象上
    printf("%d %d\n", val, refval);//输出为33,33
    return 0;
}

引用作为函数的参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<bits/stdc++.h>
using namespace std;
void swap(int &a,int &b)
{
    int t;
    t=a;
    a=b;
    b=t;
}
int main()
{
    int x,y;
    cin>>x>>y;
    swap(x,y);
    cout<<x<<" "<<y<<endl;
}

指针的引用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h>
using namespace std;
void add1(int * &a)
{
    (*a)++;
}
void add2(int * &a)
{
    a++;
}
int main()
{
    int *x;
    x=new int;
    printf("%x\n",x);
    scanf("%d",x);
    add1(x);
    cout<<x<<" "<<*x<<endl;
    add2(x);
    cout<<x<<" "<<*x<<endl;
}

 

posted @   心悟&&星际  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示