怎么在函数体内对外部指针进行赋值?

本文通过C++代码详细解释了指针作为值传递和地址传递的区别,以及如何通过二级指针和引用改变指针指向并输出。同时提到了在使用完动态分配的内存后需要手动释放的问题。
摘要由CSDN通过智能技术生成

#include<iostream>
using namespace std;


//指针作为值传递时,无法修改或给其赋值
void PointerAssignment1(int*m, int&n) {
    m = &n;
}

//可以利用以下方式操作

//地址传递,二级指针修改p的指向
void PointerAssignment2(int**m,int &n) {
    *m = &n;
}

//通过指针的引用改变指向
void PointerAssignment3(int*&m,int&b) {     //传入一级指针的引用(一级指针的地址)
    //m =new int(15);
    m = &b;
}

int main() {
    int a = 10;
    int b = 20;
    int* p = NULL;


    //PointerAssignment1(p, b);
    //cout << "*p=" << *p << endl;//没有输出任何内容,原因指针作为值传递时,
    //                            //无法改变指针的值(也就是指针的指向),只能改变指针指向的值,
    //                            //因为p原本指向NULL,所以这里*p没有输出任何内容

    //解决办法:改变指针的指向,再解引用输出指针指向的值
    //想要改变指针的指向,就需要传入指针的地址,对其地址进行操作就能改变。用什么对其操作:二级指针
    //PointerAssignment2(&p, b);
    //cout << "*p=" << *p << endl;//输出20;

    PointerAssignment3(p,b);
    cout << "*p=" << *p << endl;//输出20;

    //delete p;//指针维护堆内存时需要手动释放,如果维护局部变量则不用
    system("pause");
    return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值