首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于函数中数组作为变量的有关问题

2012-06-09 
关于函数中数组作为变量的问题我写了一个简单的求N*N的二维数组的最小值并返回行列号的函数,但是提示有错,

关于函数中数组作为变量的问题
我写了一个简单的求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数组都是栈内局部变量,当函数结束后,虽然你得到了指针,也就是地址,但是那块地址已经不是以前的的了。不归你管了,你不能再用了
[解决办法]
想传出多个值,在函数外定义一指针,使该指针指向一数组,把指针传入函数,在函数内通过指针改变数组的值使数组的值改成你想要传出的值,在函数外就可以通过指针查看你想要传出多个值

热点排行