关于函数中数组作为变量的问题
我写了一个简单的求N*N的二维数组的最小值并返回行列号的函数,但是提示有错,应该是引用指针的问题,但是我还不太熟悉指针的调用,暂时不知道错在什么地方,帖出来希望大家帮忙解决一下,谢谢了~。
a[N][N]为N个点种2个点相互的距离,已经算出,t为1维数组长度为2存放最小2点号(也就是a的行列号),pt为最小两点相对于其他点的最小距离,也就是取最小值。我想传出t和pt但是不知道怎么弄。
调用是这个
- C/C++ code
Min(tDis[N][N],*Pnum,*G);
实现是这个
- C/C++ code
//t为最小2点号,pt为最小两点的最小距离void Min(int a[N][N] , int *t, int *pt){ int min,i,j; int h1,h2; int m[2]; int G[N]={0}; min=a[0][0]; for (i = 0;i<=11;i++) { for( j = 0;j <=11;j++) { if(min>a[i][j] && a[i][j]!=0) { min=a[i][j]; m[0]=i; m[1]=j; } } } h1=m[0]; h2=m[1]; t=m; for (i =0;i<=N;i++) { if(a[h1][i]<a[h2][i]) G[i]=a[h1][i]; else G[i]=a[h2][i]; } pt=G;}
[解决办法]
你的G和m数组都是栈内局部变量,当函数结束后,虽然你得到了指针,也就是地址,但是那块地址已经不是以前的的了。不归你管了,你不能再用了
[解决办法]
想传出多个值,在函数外定义一指针,使该指针指向一数组,把指针传入函数,在函数内通过指针改变数组的值使数组的值改成你想要传出的值,在函数外就可以通过指针查看你想要传出多个值