对于我的类,我需要创建一个在运行时接受多个参数的函数:
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] 等来获取我需要的正确数据!
该标准明确了您需要如何声明主函数。
从C99标准:
5.1.2.2.1 程序启动
程序启动时调用的函数名为 main。该实现没有为此声明原型 功能。它应使用返回类型int和no 参数:
int main(void) { /* ... */ }
或具有两个参数
(此处称为
argc
和argv
,尽管可以使用任何名称,如 它们是声明它们的函数的本地):
int main(int argc, char *argv[]) { /* ... */ }
或同等学历;9)或在某些 其他实现定义的方式。
如果声明了它们,则 主函数的参数应遵循以下约束:
—
argc
的值应为非负数。—
argv[argc]
应为空 指针。— 如果
argc
的值大于零,则数组 成员argv[0]
到argv[argc-1]
包含应包含指向字符串的指针,这些字符串由主机提供实现定义的值 程序启动前的环境。目的是供应给 在从其他地方启动程序之前确定的程序信息 在托管环境中。如果主机环境无法 提供带有大写和小写字母的字符串, 实现应确保在 小写。— 如果
argc
的值大于零,则字符串 指向argv[0]
表示程序名称;argv[0][0]
应 如果主机无法提供程序名称,则为null 字符环境。如果 argc 的值大于 1,则字符串 指向argv[1]
通过argv[argc-1]
代表程序 参数。— 参数
argc
和argv
以及指向的字符串 由argv
数组应可由程序修改,并保留其程序启动和程序终止之间的最后存储值。
void main(int x, int y, int generation, char *layout[20])
是main()
的无效签名。您需要使用
int main(int argc, char *argv[])
其中,argv[0]
toargv[argc-1]
将保存传递给main()
的参数。
引用C11
,章节§5.1.2.2.2,
如果
argc
的值大于零,则argv[0]
指向的字符串 表示程序名称;argv[0][0]
应为空字符,如果 程序名称在主机环境中不可用。如果argc
的值为 大于 1,由argv[1]
到argv[argc-1]
指向的字符串 表示程序参数。
在 main 函数中不能传递两个以上的参数。在 main 函数中,您只能传递two
参数或Zero
参数。
使用以下参数,可以传递值命令行。
int main(int argc, char *argv[])