薄荷萤火虫 2022-03-24 21:44 采纳率: 91.8%
浏览 18
已结题

C语言数组问题,关于数组的赋值传递方面

C语言,我在主函数调用了这个函数

img


我想要主函数的PN和PY数组在如下函数过程中发生的变化在主函数中也发生变化该怎么办啊

img

void RelevantSort(int PN[],int PY[],int PX[],int PXTemp[],int n)
{
    int Temp[n];//用于存放排序好的PY,最后赋回给PY
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(PXTemp[i]==PX[j])//找到原来该X坐标是第几个数,即第j个 
            {
                Temp[i]=PY[j];//把Y值赋给Temp中
                PN[i]=j;//PN直接更新 
            }
        }
    }
    PY=Temp;
    //以数组为函数参数传给形参时
    //由于数组名传递(地址传递),实参和形参共用一段内存
    //对形参更改时实参的值也会改变 
}

  • 写回答

1条回答 默认 最新

  • bingbingyihao 2022-03-24 22:11
    关注

    回答:方法一,定义在外面

    img

    方法二,数组直接传进去

    img

    #include <iostream>
    using namespace std;
    
    #define N 10    //需要先定义数组长度的 
    
    void RelevantSort(int PN[], int PY[], int PX[], int PXTemp[], int n);
    
    int main(){
        int PY[N];
        int PN[N];
        int PX[N];
        int PXTemp[N];
        RelevantSort(PN, PY, PX, PXTemp, N);         //方法二,数组名作为参数传进去,由于数组是引用变量,会连带改变数组里面元素的值的,相当于指针 
    }
    
    void RelevantSort(int PN[],int PY[],int PX[],int PXTemp[],int n)
    {
        
    }
    

    最后说明一个问题,这个变量定义,名字可以换的简单些,加上一些函数,例如如果是表示点坐标的,可以改为Pos_x[], Pos_y[],一般临时数组在函数内部定义即可,不作为参数传递

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 3月24日

悬赏问题

  • ¥100 业务编程如何选择学习方向和内容?
  • ¥15 wamp3.3.5安装完成后图标正常显示绿色,鼠标左右键点击图标均无反应。求解决方法。
  • ¥15 鼠标点击的这条记录了什么?
  • ¥15 在写pid调速的程序时,电机始终维持最大速度
  • ¥15 【有偿】调用DXGI截图初始化失败,提示0xf 887a0004
  • ¥15 请问如何查看手机root记录?
  • ¥15 商城小程序订单号重复
  • ¥15 学校优化算法sbo和蚁群算法怎么结合
  • ¥21 matlab怎么求时域信号的二阶导数
  • ¥15 判断两个表是否完全相同