在c ++中创建可执行文件,返回int数组

时间:2014-03-28 10:57:34

标签: c++

我希望我的C ++可执行文件返回int数组。

int* main()
{
    int a[]={1,2,3,4,5,6,7,8};
    return *a;
}

这将给error: '::main' must return 'int'。 还有其他办法吗?

6 个答案:

答案 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个二进制标志来组成整数值。这是否有用取决于您的使用案例。

相关问题