如何从 C++ 中的函数返回结构
How To Return A Struct From A Function In C++
所以我通过搜索这个网站彻底浏览了这些主题,但我找不到可以帮助我的东西。
我正在为我的朋友做一个任务,让我告诉你,我已经一年或更长时间没有使用C++了。
所以我面临的问题是指针和通过指针返回结构。
下面是代码:
#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();
}
现在的问题是,很难从该位置检索正确的值。
我正在尝试使用 V++ 增加指针。有趣的是,如果我使用以下内容,它会正确打印值:
cout << V->avg;
cout << V->pct;
V++;
cout << V->avg;
cout << V->pct;
等等。但是,如果我使用循环或编写哪怕一行或使用 endl 或 ,值就会混乱并出现乱码值。
那么这里可能出了什么问题呢?
重要的是我使用结构,也请根据代码进行指导。
返回指向堆栈上数据的指针不起作用。请改用std:vector<AVGPCT>
并按值(而不是指针)返回它。与 Java 或 C# 不同,C++基于值而不是指针。
C++不允许从main()
返回void
。
根据C++标准,标头<iostream.h>
不存在。标准标头为 <iostream>
。
看起来像这条线
AVGPCT D[5]={0.0,0.0,0.0,0.0,0.0};
在本地向函数声明数组 D CALC()
您将指向该数组的指针传递回 main 函数,但该数组被标记为免费游戏,以便在函数结束时覆盖。你在程序中做的事情越多,内存中的这个位置被覆盖的可能性就越大,尽管很难说什么时候会发生。因此,有时你会侥幸逃脱,有时你不会。
冒着给你建议的风险,最好在 main 中的某个地方声明D
并将指向它的指针传递到函数中,或者在函数中使用 new
或 malloc
并将生成的指针传回。
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量