下列选项中不是c语言main函数正确表达形式的是

A. main(int argc,char *argc[ ]);B.main(ac,av) int ac;char **av;C.main(c,v) int c;char *v[ ];D.main(argc,argv) int argc;char argc[ ];
答案是D。怎么理解

main函数有两个参数
一个是int argc ,这个表示这个主函数有几个参数,当什么参数也没有它的值是1
另一个是char *argc[],这个是一个字符串数组,表示后面的参数内容

比如我们运行一个控制台程序 test 参数是 "aaa" ""bbb" "ccc"
写成./test aaa bbb ccc
那么argc 的值就是 4
argv[1] 的值就是 aaa
argv[2]的值就是 bbb
argv[3]的值就是 ccc

以此类推

上面的4个选项,只有D的第二个参数是一个字符串,不是字符串数组,所以D错了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-31
这种题真没意思。
A是C90标准写法,你可能把char *argv[]写错了。
B、C、D都是以前的写法。那时候形参的声明是放在小括号外面的,紧跟着小括号。

argc代表参数个数,argv是字符串数组,保存具体的参数。
所以argc应是int,argv应是 char*()[]类型,或者说是char**类型。
argc和argv可以换成其他变量名,只要保持一致就行。

比如你的程序最后生成一个可执行文件test.exe,在命令行状态下输入
test a b
则一共有3个参数(可执行文件名也算一个),于是argc=3,argv[0]="test",argv[1]="a",argv[2]="b"
第2个回答  2012-03-31
当你编译完一个程序后, 会生成一个可执行文件(例如: a.out 吧), 如果用过linux你就知道, 这个文件生成之后, 要运行它要输入命令: a.out 程序就会执行源文件里的入口函数, main函数. 如果main函数是带参数的, 就像你写的那些一样, 例如: int main(int argc, char* argv[]); 其中argc是一个index, 相当于数组下标, argv 就是执行时候命令行的参数指针; 要在命令行输入 a.out 111 222这个时候argv[]就是char* argv[3] = {"a.out", "111", "222"};可以给main函数传参了.
第3个回答  2012-04-04
A 不是Int argc char * argv[] 吗 你打错了?
第4个回答  2012-03-31
A
相似回答