在许多C++ IDE和编译器中,当它为您生成主函数时,它看起来像这样:
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
当我在没有IDE的情况下编写C++代码时,只需使用命令行编译器,我输入:
int main()
Run Code Online (Sandbox Code Playgroud)
没有任何参数.这意味着什么,对我的计划至关重要?
每个程序都从main(int argc, char *argv[])定义开始.
我不明白这意味着什么.如果我们在程序中不使用这些参数,有人可以解释为什么我们会使用这些参数,我会很高兴的吗?为什么不int main()呢:?
程序的名称是其中的一个元素,*argv[]并且argc是参数个数的计数*argv[]?发送到的其他参数是*argv[]什么?我们如何发送它们?
我刚写了一个小程序,用C语言读取命令行参数,没什么太难的.我也在修改它们,例如将参数的第一个字符更改为大写.
我知道你不应该修改字符串文字,因为它可能导致未定义的行为,所以只是想知道*argv[]你不应该改变文字中的字符串.
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud) 如果我写:
int main(int argc, char** argv)
Run Code Online (Sandbox Code Playgroud)
我得到适当的命令行输入.如果我写的话怎么会说,
int main(int foo, double fooDouble, fooType FooVar)
Run Code Online (Sandbox Code Playgroud)
这是依赖于操作系统还是依赖于编译器?
我有一些参数可以让程序正常工作。该参数应该是 MAX_NUM, x, y。
当捕获 char 输入列表的参数时,我当前使用参数 1 而不是 0 获取 MAX_NUM。
前任:
int main (int argc, char *argv[]) {
int MAX_NUM = atoi(argv[0]);
int x = atoi(argv[1]);
int t = atoi(argv[2]);
printf("MAX_NUM %d\n", atoi(argv[0]));
....
Run Code Online (Sandbox Code Playgroud)
打印argv[1]我正确地得到了 MAX_NUM,当打印第一个参数时得到 0。
为什么 C 将 char 输入列表数组初始化为 1 而不是 0 或程序名称?
我试图计算用于存储“ res”的数组的数组的元素,这些内存用于连接存储在“ argv”中的每个字符串,包括NULL终止符。可能会发现更多错误,但是我不了解的第一个错误是argv[a][b] != NULL在中/* length of arrays */。为什么这是不可接受的,还有其他方法(没有硬编码或传递长度)来确定元素数量?
使用的:http://pythontutor.com/c.html#mode=edit
char *ft_concat_params (int argc, char **argv)
{
int len_argc = argc - 1,
len_argv = 0;
char *res = NULL;
/* length of argvs */
for (int a = 0; a < len_argc; a++) {
for (int b = 0;argv[a][b] != NULL; b++) {
len_argv++;
}
}
/* allocate memory res -- freed by calling function! */
res = malloc (len_argv * sizeof …Run Code Online (Sandbox Code Playgroud)