指针与引用
C++中指针和引用的应用很常见,连着的使用极易混淆,但是区别很明显:
1. 指针是变量,而引用只是变量的一个别名,而且引用使得别名与引用对象绑在了一起。
2.指针初始化之后还可以指向其他变量,但是引用只能初始化一次。
3.sizeof 操作的结果不一样,引用为所指向变量的大小,指针则返回指针本身的大小。
4. 引用不可以为空,但是指针可以是空指针。
#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;
}
引用作为函数的参数
#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;
}
指针的引用
#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;
}
浙公网安备 33010602011771号