c/c++语言开发共享在二维数组函数中返回数组?

我想使用函数返回二维数组的平均值与不同的数组,程序运行正常,但它返回一个大的负数,我如何返回数组或应用指针到我的函数? 我在哪里添加指针使其工作?

我遇到这个:
警告:传递’returnAvg’的参数1使得整数指针没有强制转换[默认情况下启用] |

#include  #include  #include  void returnAvg(int allTest[2][2],int students,int test); int main () { int students = 2, test = 2, i,j; int allTest[students][test]; for(i=0;i<students;i++){ for(j=0;j ",i+1,j+1); scanf("%d",&allTest[i][j]); } } returnAvg(allTest[2][2],students,test); return 0; } void returnAvg(int allTest[2][2],int students,int test){ int i,j; int avg[students]; for(i=0;i<students;i++){ int sum = 0; for(j=0;j<test;j++){ sum += (allTest[i][j]); } avg[i] = sum/test; } printf("the average is %d, %d", avg[0],avg[1]); return; } 

    你曾经将数组传递给函数returnAvg的方法是错误的! 我认为最简单的方法是将数组作为指针传递。 这是因为这种数组是一个块或连续的内存区域!

    我认为可以使用不同的方式分配数组和向量! 也许使用C ++ new或C malloc; 但这将成为你的下一步!

    检索包含avg的向量的方法将在下面讨论!

    我在64位系统下编译了你的代码,将这段代码添加到你的主:

     for(i=0;i 

    输出应该是这样的:

     0x7fff0cd89e60 0x7fff0cd89e64 0x7fff0cd89e68 0x7fff0cd89e6c 

    这表明我说的话! 所有元素都是连续的!

    我们知道有一个指向第一个元素的“基础”指针。 在输出中是0x7fff0cd89e60(即指向allStudent [0] [0]的指针)。

    此指针与数组元素的所有指针之间的关系是:

     0x7fff0cd89e60 + sizeof(int) * (i*test+j) 

    说明指针算术我们可以修改你的函数:

     void returnAvg(int * allTest,int students,int test){ int i,j; int avg[students]; for(i=0;i 

    你可以在你的主要调用此function:

     returnAvg(&(allTest[0][0]),students,test); 

    现在我们可以看到如何将avg数组传递给main!

    这里的代码也可以修改学生人数和测试结果!

     void returnAvg(int *avg, int * allTest,int students,int test); int main () { int students = 2, test = 2, i,j; int allTest[students][test]; int avg[students]; /* for(i=0;i ",i+1,j+1); scanf("%d",&allTest[i][j]); } } returnAvg(avg,&(allTest[0][0]),students,test); for(i=0;i 

    你的代码很好,除了:

    returnAvg(allTest[2][2],students,test);

    应该

    returnAvg(allTest,students,test);

    你不必在这里给出attTest大小,因为你没有在这里定义它,只是提供给函数的参数。 你可能会看到你在这里工作代码。

      returnAvg(allTest[2][2], students, test); 

    因为allTest[2][2]求值为int而函数需要数组int [2][2]

    你需要使用:

      returnAvg(allTest, students, test); 

    在这里快速更新你的代码,allTest arg也应该重做

     #include  #include  #include  static void returnAvg(int allTest[2][2],int students,int test, int *avg){ int i,j; for(i=0;i ", i + 1, j + 1); scanf("%d", &allTest[i][j]); } } returnAvg(allTest, students, test, avg); return 0; } 

      以上就是c/c++开发分享在二维数组函数中返回数组?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522918.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐