爔奕 2023-03-02 10:48 采纳率: 100%
浏览 40
已结题

C++中指针引用参数问题

App函数中参数使用指针引用参数的情况(运行正常)

img

App函数中参数去掉&的情况(运行不正常)

img


为什么会出现这个问题呢?
不太明白App函数中使用指针引用参数和不使用引用参数的区别。不使用指针引用参数时,主函数传给App的不是一个指针吗,对pa进行赋值不就是给ary进行赋值吗?

  • 写回答

5条回答 默认 最新

  • 元气少女缘结神 2023-03-02 11:09
    关注

    因为你在子函数中new了一个指针,这个new的指针和你传的main中的指针不一样,所以你如果不用 & 将新指针内容返回,它是不能返回到main中的:

    void wrongptrvalue(int *array,int num)
    {
        array=new int[num];
        cout<<"array ptr :"<<array<<endl;
        for(int id=0;id!=num;id++)
        {
            *(array+id)=id+3;
            cout<<"in wrongptrvalue:"<<*(array+id)<<" ";
        }
        cout<<endl;
    }
    
    int main()
    {
        const int num=3;
        int *arrayreal=(int*)malloc(num*sizeof(int));
        memset(arrayreal,0,num*sizeof(int));
    
        cout<<"real array ptr :"<<arrayreal<<endl;
    
        changeptrvalue(arrayreal,num);
        for(int id=0;id!=num;id++)
        {
            cout<<*(arrayreal+id)<<" ";
        }
        cout<<endl;
    
        wrongptrvalue(arrayreal,num);
        cout<<"after  wrongptrvalue :"<<arrayreal<<endl;
        for(int id=0;id!=num;id++)
        {
            cout<<*(arrayreal+id)<<" ";
        }
        cout<<endl;
    
        return 0;
    }
    
    

    img


    除非你在子函数中不要new,像changeptrvalue中一样直接使用main中的这个指针即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月10日
  • 已采纳回答 3月2日
  • 创建了问题 3月2日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?