关于类型:C ++考试,谁得到第一个正确?

C++ exam, who gets the first one correct?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the proper declaration of main?

我刚参加了我的第一次C++考试。第一个问题是

int main(?, char ** argv)
Which one of the following suggestions will not work (as first formal parameter substitute for ?):

1
2
3
4
    a) char argc
    b) int argc
    c) double argc
    d) bool argc

< BR>答案在4小时纯手写的个人考试中占2%。
允许使用所有工具,接受任何可编程设备或任何通信方式

谁能正确理解这一点:)?


定义"工作"的含义。其中任何一个都可以工作,但是一个有效的、标准兼容的、格式良好的C++程序具有以下签名之一:

1
2
3
int main()
int main(int argc, char** argv)
int main(int argc, char* argv[])

所以a)、c)和d)是错误的。


定义"不起作用"?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int main(char argc, char ** argv)
{
    printf("%d
"
, argc);
    return 0;
}

./a.out 1 2 3
Output: 4

int main(int argc, char ** argv)
{
    printf("%d
"
, argc);
    return 0;
}

./a.out 1 2 3
Output: 4

int main(double argc, char ** argv)
{
    printf("%d
"
, *(int*)&argc);
    return 0;
}

./a.out 1 2 3
Output: 4

int main(bool argc, char ** argv)
{
    printf("%d
"
, argc);
    return 0;
}

./a.out 1 2 3
Output: 4


既然问题是问哪一个不起作用。它必须是double,所有其他的都是整数。

我相信这是正确的答案,因为除了整数值之外,不能用其他任何东西索引数组。但这假设您实际上想要索引argv数组。

但是在C++考试中问什么问题呢?


"int argc"是正确的用法。argc表示传递给主服务器的参数数。所以这是唯一的内景。