将数组作为参数传递给int main()

Mic*_*per 9 c++ parameters default-value

我很难将数组作为参数传递给int main()默认值.例如:

int main(int a){}
Run Code Online (Sandbox Code Playgroud)

非常有效.同样如此

int main(int a = 1){}
Run Code Online (Sandbox Code Playgroud)

传递int main()数组也非常有用:

int main(int a[3])
Run Code Online (Sandbox Code Playgroud)

然而,结合这两个概念似乎是打破:

int main(int a[1] = {0,1})
Run Code Online (Sandbox Code Playgroud)

经过大量的谷歌搜索后,我还没有找到解决方案.

请帮帮我,你是我唯一的希望!

编辑

简而言之,这样做的目的是让我的代码尽可能小,这是我教授最近发布的一个挑战(不是为了学习而只是为了积分).任务是创建一个递归的"12天的圣诞节"计划

这是我目前的计划

#include <iostream> 
#include <string>
void p(std::string v){std::cout<<v;}
std::string v[13] = {"A Partridge in a Pear Tree.\n\n","2 Turtle Doves\n","3 French Hens\n","4 Colly Birds\n","5 Gold Rings\n","6 Geese-a-Laying\n","7 Swans-a-Swimming\n","8 Maids-a-Milking\n","9 Ladies Dancing\n","10 Lords-a-Leaping\n","11 Pipers Piping\n","12 Drummers Drumming\n",""};
int main(){
    switch(v[12].length()){
        case 12:system("pause"); return 0;
        case 11:p(v[11]);
        case 10:p(v[10]);
        case 9: p(v[9]);
        case 8: p(v[8]);
        case 7: p(v[7]);
        case 6: p(v[6]);
        case 5: p(v[5]);
        case 4: p(v[4]);
        case 3: p(v[3]);
        case 2: p(v[2]);
        case 1: p(v[1]);
        case 0: p(v[0]); 
    }v[12] += "0";
    main();
}
Run Code Online (Sandbox Code Playgroud)

我想将一系列经文作为一个参数传递给main而不是在函数上面声明它.我知道,没有最大的记忆/堆栈意识.但它会消除一条线:)

chr*_*ock 12

链接最好地解释了:

在C++中,不可能通过值将完整的内存块作为参数传递给函数,但我们可以传递其地址.

这就是你可以声明一个函数的原因

void foo (int bar[]);
Run Code Online (Sandbox Code Playgroud)

但你无法申报

void foo (int bar[] = {0 ,1});
Run Code Online (Sandbox Code Playgroud)

它与此无关main().


Kei*_*ith 7

解决数组传递而不是不太可能使用main(),由于数组实际上是作为指针传递的,你可以这样做:

int defaultInit[2] = {0,1}; // {0,1} means 2 elements for the array.

int f(int arg[2] = defaultInit)
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)