C++ 如何从C++;

C++ 如何从C++;,c++,pointers,loops,struct,C++,Pointers,Loops,Struct,所以我已经通过搜索这个网站彻底浏览了所有的主题,但是我找不到任何可以帮助我的东西 我正在为我的朋友做一个任务,让我告诉你,我使用C++以来已经有一年或更长时间了。 所以我面临的问题是指针和通过指针返回struct 下面是代码: #include <stdio.h> #include <conio.h> #include <iostream.h> struct student { int SUB[3]; }; struct

所以我已经通过搜索这个网站彻底浏览了所有的主题,但是我找不到任何可以帮助我的东西

我正在为我的朋友做一个任务,让我告诉你,我使用C++以来已经有一年或更长时间了。 所以我面临的问题是指针和通过指针返回struct

下面是代码:

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

    struct student
   {
    int SUB[3];
   };

   struct AVGPCT
   {
    float avg;
      float pct;
   };


AVGPCT* CALC(student *A)
{
   int x,y;
    AVGPCT D[5]={0.0,0.0,0.0,0.0,0.0};

   for(x=0;x<5;x++)
   {
    for(y=0;y<3;y++)
      {
        D[x].avg+=A[x].SUB[y];
         D[x].pct+=A[x].SUB[y];
      }
   }

   for(x=0;x<5;x++)
   {
    D[x].avg/=2;
      D[x].pct/=300;
   }
   return (D);
}

void main(void)
{
   int i,j;
   student S[5];
   AVGPCT *V;

   for(i=0;i<5;i++)
   {
    for(j=0;j<3;j++)
      {
        cout << "Enter Marks Of Subject[" << (j+1) << "] Of Student [" << (i+1) <<"] [Max=100]:";
        cin >> S[i].SUB[j];
      }
   }

   V = CALC(S);
   cout << "Average Number Of Student [1]: " << V->avg;
   cout << (*V).pct;

   getch();
}
#包括
#包括
#包括
结构学生
{
int SUB[3];
};
结构AVGPCT
{
浮动平均值;
浮动pct;
};
AVGPCT*计算(学生*A)
{
int x,y;
AVGPCT D[5]={0.0,0.0,0.0,0.0,0.0};
for(x=0;x看起来像这条线

AVGPCT D[5]={0.0,0.0,0.0,0.0,0.0};
将数组D本地声明到函数
CALC()

您将指向该数组的指针传递回主函数,但该数组被标记为自由游戏,以便在函数结束时进行覆盖。您在程序中执行的操作越多,内存中该位置被覆盖的可能性就越大,尽管很难说何时会发生。因此,有时您可以侥幸成功,有时则可以你没有

冒着给出建议的风险,最好在main中的某个地方声明
D
,并将指向它的指针传递到函数中,或者在函数中使用
new
malloc
并将结果指针传回

AVGPCT D[5]={0.0,0.0,0.0,0.0,0.0};
将数组D本地声明到函数
CALC()

您将指向该数组的指针传递回主函数,但该数组被标记为自由游戏,以便在函数结束时进行覆盖。您在程序中执行的操作越多,内存中该位置被覆盖的可能性就越大,尽管很难说何时会发生。因此,有时您可以侥幸成功,有时则可以你没有


冒着给出建议的风险,最好在main中的某个地方声明
D
,并将指向它的指针传递到函数中,或者在函数中使用
new
malloc
并将结果指针传回。

返回堆栈上数据的指针不起作用。请改用
std:vector
而不是指针,它是基于值而不是指针的,C++不同于java或C语言。 C++不允许从
main()
返回
void


根据C++标准,页眉<代码> >代码>不存在。标准标题为“代码> <代码> .< /p> 返回指向堆栈上的数据的指针不起作用。使用“代码> STD:vector < /Cord>”,而不是用指针返回它。C++与java或C语言不同,基于值而不是指针。

C++不允许从
main()
返回
void


标题<代码> <代码>不存在,根据C++标准。标准标题是“代码> <代码> .< /P>。所以你需要建议,但是……你不需要建议?抱歉我不清楚,我的意思不是拆毁我的代码,建议/建议完全不同的东西。你的代码很难阅读。请确保你使用的是小的、命名的乐趣。你的缩进也在某些地方被去掉了。另外,你真的应该只使用

#include
,不需要.h。不需要C标题。所以你需要建议,但是..你不需要建议?很抱歉,我的意思是不要删除我的代码,而建议/建议完全不同于此ng.您的代码很难阅读。请确保您使用的是小的、命名良好的函数,以及运算符周围的空格。您的缩进也在某些地方出现。此外,您应该只使用
#include
,不需要.h。不需要C headersThanx mate,我完全忽略了我在函数中本地声明它。解决了。:)没问题,@MajorAly,那会发生。如果这为你解决了问题,请随意将其作为你接受的答案。-)Thanx mate,我完全忽略了我在函数中本地声明的问题。解决了。:)没问题,@MajorAly,那会发生。如果这为你解决了问题,请随意将其作为你接受的答案。;-)