我希望我的C ++可执行文件返回int数组。
int* main()
{
int a[]={1,2,3,4,5,6,7,8};
return *a;
}
这将给error: '::main' must return 'int'
。
还有其他办法吗?
答案 0 :(得分:3)
你不能这样做。 main
函数的返回类型通常仅指示错误代码。要输出某些计算结果,请将数组写入文件。
例如:
#include <fstream>
int main()
{
int a[]={1,2,3,4,5,6,7,8};
std::ofstream ofs("data.tsv");
for(int i=0; i<9; i++) {
ofs << a[i] << "\t";
}
return 1;
}
答案 1 :(得分:1)
在C ++中,main必须确实返回一个int。这是程序的错误代码。如果一切顺利,则为0,否则为正数。
如果要显示int数组。你可以使用<iostream>
。
#include <iostream>
int main()
{
int a[]={1,2,3,4,5,6,7,8};
for (int i = 0; i < 9; i++)
std::cout << a[i] << std::endl;
}
您也可以选择写入将被其他程序读取的文件。
#include <iostream>
#include <fstream>
int main()
{
int a[]={1,2,3,4,5,6,7,8};
ofstream myfile;
myfile.open ("out.txt");
for (int i = 0; i < 9; i++)
myfile << a[i] << std::endl;
myfile.close()
}
然后在另一个程序
std::vector<int> a;
ifstream myfile;
myfile.open ("out.txt");
for (int i = 0; i < 9; i++)
{
int ai;
myfile >> ai;
a.push_back(ai);
}
myfile.close()
答案 2 :(得分:1)
main是一个特殊功能,C ++标准特定于其签名:
C ++标准版n3337 3.6.1
程序应包含一个名为main的全局函数,即 指定的程序开始。它是实现定义的 需要在独立环境中定义主程序 功能。 [注意:在独立的环境中,启动和 终止是实现定义的;启动包含 使用static执行命名空间作用域对象的构造函数 储存期限;终止包含析构函数的执行 对于具有静态存储持续时间的对 - 结束说明]
这是 实现不得预定义主要功能。这个功能 不得超载。它应该具有int类型的返回类型,但是 否则其类型是实现定义的。所有实施 应允许以下两个主要定义:
int main(){/ * ... * /}
和
int main(int argc,char * argv []){/ * ... * /}
还有其他办法吗?
使用信息流打印到文件或显示:
int a[]={1,2,3,4,5,6,7,8};
for (int i = 0; i < 9; i++) {
std::cout << a[i] << std::endl;
}
或:
#include <algorithm>
int a[]={1,2,3,4,5,6,7,8};
std::copy( a, a + 8, std::ostream_iterator<int>( std::cout,", "));
答案 3 :(得分:0)
错误非常明确。 main
必须返回int
,而不是数组。这根本不可能。
答案 4 :(得分:0)
没有办法做到这一点。根据C ++标准,main()必须返回int
。
见标准3.6.1.2节:
实现不应预定义主函数。 此功能不应过载。 它的返回类型应为int类型,否则其类型为实现定义。
答案 5 :(得分:0)
您无法更改主方法的签名。调用进程的所有代码都使用相同的接口返回一个int - 在调用进程的任何代码中,您希望如何检索这些额外的int?
但是 - 如果您需要组合多条信息,您仍然可以将它们编码为单个int值。例如,您可以单独解释十进制数字,允许您返回十个或更多值,每个值从0到9。或者对于不同的示例,您可以组合32个二进制标志来组成整数值。这是否有用取决于您的使用案例。