指针与引用

指针:

1.指针的本质

就是一个地址,就一个整型数,无论各种类型,它就是一个地址。
不同类型的指针只是方便编程,改变指针的类型不会改变对应地址所存放的内容
n位机器,则无论何种指针,其大小都是n位

2.指针的使用:

*p:逆向使用指针
 int a=10;
 int b=20;
 int* p; // 整型指针
 p=&a; // 指针P中存放着变量a地址
 cout<<p<<endl; // 输出指针P所指的地址,也就是a地址
 cout<<*p<<endl; // 根据指针p的地址进行查找,并输出所存放的数据,也就是a
 (*p)++;//对a进行操作
 p=&b;
 (*p)++;//对b进行操作

3.指针作为函数的参数:

注意指针就是一个存放着地址的变量,那么作为参数时,其实就是将该指针所指的地址****拷贝到函数的形参指针中而已。
本质是传递一个值
在函数中,修改形参所指的地址,不会改变实参所指的地址。与传入基本数据类型变量一样。
但可以通过形参指针,修改对应地址中所存放的数据

void f1(int* p){
	*p=20; // 主函数中的a会被修改
}
void f2(int* p){
	int a=30;
	p=&a; // 只是形参所指的地址改变,但实参所指地址不改变
}
int main(){
	int a=10;
	int* p=&a;
	f1(p);
	cout<<*p<<endl;// 20
	f2(p);
	cout<<*p<<endl;// 依然为20
}

4.双指针

也就是指针的指针,双指针指向某个指针所在的地址

int a=10;
int* p;
int** q=&p; // q指向p的地址
*q=&a// 由于q指向p的地址,则*q=&a 会修改 p的内容
cout<<*p<<endl; // 会输出a的值

引用:

1.引用的本质:

引用不是变量,只是变量的引用(或者别名),对引用进行操作,相当于对变量直接进行操作。
内存不会为引用创建新的变量,只会存在所引用的变量
一旦确定引用的变量,之后就不能修改

2.引用的使用:

int a=10;
int b=20;
int& p=a;// 对a或p进行操作,效果一样
p=b; // p还是引用a,相当于 a=b;

3.引用作为函数的参数:

传递的是所引用的变量的地址

void f1(int& p){
	p++;// p就是a的引用,相当于a++
}
int main(){
	int a=10;
	f1(a);
}

4. 与指针的区别:

1.指针可以指向空,但引用不能指向空,必须引用已经存在的变量
2.对指针所指地址的数据进行操作需要进行解指针(*p),而引用这可以直接修改

int a=10;
int* p=&a //要取地址
int& q=a //不用取地址
*p=15;	//需要解
cout<<a<<endl;
q=20;	// 直接进行操作,就可修改a
cout<<a<<endl;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值