C++中传参时使用指针和引用接收参数的差异

文章讨论了在C++中如何使用指针和引用作为函数参数来修改变量的值。通过示例代码展示了传递整型参数的指针和引用的区别,以及如何改变指针本身的指向。同时解释了为什么直接传递指针的值不会影响原指针的指向,而传递引用则可以实现对原变量的直接修改。
摘要由CSDN通过智能技术生成

使用指针

  1. 接收整型参数并修改
    如果传入a而不是a的地址,那么在函数中 int b = a,&a != &b, 即b是a的副本,在函数中修改的b值并不会影响a
void change01(int *b){
    *b = *b+1;
}


int main() {
    int a = 10;
    change01(&a);
    printf("%d\n",a); // a=11
}
  1. 接收指针参数让其指向别处
    注意如果想让指针pt1指向别处(这里是pt2所指向的变量),那么你只能选择向函数传输pt1的地址而不是pt1所存储的地址值,因为若你向函数中传输了pt1的值,那么在函数中依旧是创建了pt1副本,在函数中修改pt1的值并不会影响原来pt1的值,其实和上面一个道理。
void change03(int **pt1_,int *pt2){       // 接收的应该是,pt1指针本身的地址,pt2指向的地址
    *pt1_ = pt2;                         //  接收时的变量应该为 int类型指针的地址
}

int main(){
	int a = 10;
	int *pt1 = NULL;
    int *pt2 = &a;
    change03(&pt1,pt2);       // 传的不应该是pt1,pt1是指向的地方,而应该传入pt1自己本身的地址
    printf("%d\n",*pt1);
}

使用引用

  1. 依旧是上面第一个例子
    在函数中 int &b = a 接收到了参数,b只是a的一个引用,即&b=&a,既然修改的值的地址相同,那么肯定修改成功。
void change02(int &b){                  //  b就是a的别名
    b = b + 1;
}

int main()
{
	int a = 10;
    change02(a);
}
  1. 依旧是上面第二个例子
  • 你会发现pt3_和pt3的地址相同,这样证明了pt3_是pt3的引用,修改pt3_就是在修改pt3
    在这里插入图片描述

void change04(int *&pt3_,int *pt4){       // int *&pt3_ = pt3
    pt3_ = pt4;                           // pt3_不再是pt3的副本,&pt3=&pt3
}
int main()
{
	int a = 10;
	int *pt3 = NULL;
    int *pt4 = &a;
    change04(pt3,pt4);
    printf("%d\n",*pt3);  // 10
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值