我刚参加了我的第一次c ++考试。 第一个问题是
int main(◊,char ** argv)
以下哪一项建议不起作用(作为◊的第一个正式参数替代):
a) char argc b) int argc c) double argc d) bool argc
在4小时纯手写的个人考试中,答案占2%
允许所有工具,接受任何可编程设备或任何通信方式
谁可以做到这一点:)?
答案 0 :(得分:8)
定义“工作”的含义。任何可能都可以工作,但是一个有效的,符合标准的,格式正确的C ++程序具有以下任一签名:
int main()
int main(int argc, char** argv)
int main(int argc, char* argv[])
所以a),c)和d)是错误的。
答案 1 :(得分:3)
定义“不起作用”?
int main(char argc, char ** argv)
{
printf("%d\n", argc);
return 0;
}
./a.out 1 2 3
Output: 4
int main(int argc, char ** argv)
{
printf("%d\n", argc);
return 0;
}
./a.out 1 2 3
Output: 4
int main(double argc, char ** argv)
{
printf("%d\n", *(int*)&argc);
return 0;
}
./a.out 1 2 3
Output: 4
int main(bool argc, char ** argv)
{
printf("%d\n", argc);
return 0;
}
./a.out 1 2 3
Output: 4
答案 2 :(得分:2)
鉴于问题是哪一个不起作用。它必须是double
所有其他都是整数。
我相信这将是正确的答案,因为您无法使用除整数值之外的任何内容索引数组。但这假设您实际上想要索引argv
数组。
但是在C ++考试中要问一个糟糕的问题。
答案 3 :(得分:0)
“int argc”是正确的用法。 argc表示传递给main的参数数量。所以它只是int。