对于我的类,我需要创建一个在运行时接受多个参数的函数:
void main(int x, int y, int generation, char *layout[20])
但是当程序使用我对这些变量的输入运行时,信息不会存储在调试过程中
run 3 3 3 Test_Round
print x // returns 5
print y // returns -8779
如何将多个参数传递给main函数,以便main识别我给它的参数?
谢谢大家!我只是使用argv [1]等来获取我需要的正确数据!
答案 0 :(得分:5)
标准清楚地说明了如何声明主要功能。
来自C99标准:
5.1.2.2.1程序启动
程序启动时调用的函数名为main。该实现声明没有原型 功能。它应使用 int 的返回类型定义,并使用否定义 参数:
int main(void) { /* ... */ }
使用两个参数或
(此处称为
argc
和argv
,但可以使用任何名称 它们是声明它们的函数的本地符号:
int main(int argc, char *argv[]) { /* ... */ }
或等同物; 9)或某些 其他实现定义的方式。
如果他们被宣布,那么 主函数的参数应遵守以下约束条件:
-
argc
的值应为非负。-
argv[argc]
应为 null 指针。强>- 如果
argc
的值大于零,则为数组 成员argv[0]
到argv[argc-1]
包含包含指针 到字符串,由主机提供实现定义的值 程序启动前的环境。意图是供给 程序信息在程序启动之前从其他地方确定 在托管环境中。如果主机环境不具备 提供大写和小写字母的字符串 实施应确保收到字符串 小写。- 如果
argc
的值大于零,则为字符串argv[0]
指向的代表程序名称;argv[0][0]
应该是 如果程序名称不可从主机获得,则空字符 环境。如果argc的值大于1,则为字符串argv[1]
通过argv[argc-1]
指出的程序 参数。- 参数
argc
和argv
以及指向的字符串 由argv
数组可以修改程序,保留他们的 程序启动和程序终止之间的最后存储值。
答案 1 :(得分:1)
void main(int x, int y, int generation, char *layout[20])
是main()
的无效签名。你需要使用
int main(int argc, char *argv[])
其中,argv[0]
到argv[argc-1]
将保存传递给main()
的参数。
引用C11
,章节§5.1.2.2.2,
如果
argc
的值大于零,则argv[0]
指向的字符串 代表程序名称;argv[0][0]
如果是,则为空字符 程序名称不能从主机环境中获得。如果argc
的值是 大于一,argv[1]
通过argv[argc-1]
指向的字符串 代表程序参数。
答案 2 :(得分:0)
你不能在main函数中传递两个以上的参数。在main函数中,您只能传递two
参数或Zero
参数。
使用以下参数,您可以传递值命令行。
int main(int argc, char *argv[])