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().
解决数组传递而不是不太可能使用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)
| 归档时间: |
|
| 查看次数: |
12121 次 |
| 最近记录: |