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;
    //以数组为函数参数传给形参时
    //由于数组名传递(地址传递),实参和形参共用一段内存
    //对形参更改时实参的值也会改变 
}

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

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[],一般临时数组在函数内部定义即可,不作为参数传递