argv 命令行参数容器的真实属性
true properties of argv command line argument container
我知道命令行参数由 argv [] 数组中的字符串指针指向。即 argv [0] 包含指向程序名称的指针,而 argv [1] 包含指向第一个命令行参数的指针。
但我注意到 argv 在互联网上的一个非常不同的应用,写在下面。我已经成功编译它并打印出第二个参数的第三个字符。
#include <stdio.h>
int main(int argc , char *argv []) {
printf("%c\n", argv [1][2]);
return 0; }
我有两个关于这个使用的问题。
argv 的真实尺寸是多少?它停在两点还是更多?
我注意到程序员使用 %c 访问和打印指向的内容的代码。现在,我们总是可以解析指向 %s 的指针(字符串指针)并期望它打印出字符集直到空终止符。
据我所知,%c 只能在其自身包含字符的数组中使用。
即
char yadhavan [] = yadhavan is a boy;
printf ("%c", yadhavan [3]);
有人可以解释一下 %c 是如何与指针数组一起使用的吗?
多一点解释总是受欢迎的!
argv
是 char*[]
类型并包含多个字符串(命令行参数)。
argv[i]
是 char*
类型并包含一个字符串。
argv[i][j]
属于 char
类型并包含一个字符。
What is the true dimension of argv? Does it stop at two or is there more?
这取决于有多少个命令行参数。
Could someone please explain how %c
has been used with a pointer array?
可以声明 char
指针并使它们指向字符串,或者只使用 char
数组并保存字符串:
char* str="string";
或
char str[]="string";
在这两种方式中,都可以使用以下方式引用字符:
printf("%c",str[3]);
argv
其实就是char*
的数组。因此,可以从中引用单个字符。
What is the true dimension of argv? does it stop at two or is there more?
argc
告诉您参数计数(或您所说的 argv
的维数)。也就是说,argv
中的字符串数等于argc
。因此,如果提供了多个参数,argv
可以包含两个以上的字符串。例如,如果我要执行一些命令,如
$ foo file1 file2 ...
argv
看起来像
argv[0] = "foo[=11=]"
argv[1] = "file1[=11=]"
argv[2] = "file2[=11=]"
...
有关 argc
与 argv
的更多详细信息,请参阅 this other answer。
Could someone please explain how %c has been used with a pointer array?
首先,%s
用于打印字符串。 %c
用于打印单个字符。其次,argv
是一个字符串数组,而字符串只是一个字符数组 (char
)。所以,argv
实际上是一个字符数组。所以,当你看到
printf("%c\n", argv[1][2]);
代码正在打印 argv
中第二个参数的第三个字符。所以,如果我要执行命令
$ foo bar
argc
和 argv
看起来像
argc = 2
argv[0] = "foo[=14=]"
argv[1] = "bar[=14=]"
argv[1][0] = 'b'
argv[1][1] = 'a'
argv[1][2] = 'r'
argv[1][3] = '[=14=]' // null terminator
char *argv [] 是指针数组,它充当二维数组,它不能包含超过 2 维的数组。所以'argv'中的数据与2D非常相似,但没有指定限制。您可以在下面查看 link:Limit on the number of arguments to main in C
#include <stdio.h>
int main(int argc , char *argv []) {
printf("%c\n", argv [1][2]);
return 0; }
这里的 char *argv[] 与
非常相似
Char argv[][] //with no argument limitation.
我知道命令行参数由 argv [] 数组中的字符串指针指向。即 argv [0] 包含指向程序名称的指针,而 argv [1] 包含指向第一个命令行参数的指针。
但我注意到 argv 在互联网上的一个非常不同的应用,写在下面。我已经成功编译它并打印出第二个参数的第三个字符。
#include <stdio.h>
int main(int argc , char *argv []) {
printf("%c\n", argv [1][2]);
return 0; }
我有两个关于这个使用的问题。
argv 的真实尺寸是多少?它停在两点还是更多?
我注意到程序员使用 %c 访问和打印指向的内容的代码。现在,我们总是可以解析指向 %s 的指针(字符串指针)并期望它打印出字符集直到空终止符。
据我所知,%c 只能在其自身包含字符的数组中使用。
即
char yadhavan [] = yadhavan is a boy;
printf ("%c", yadhavan [3]);
有人可以解释一下 %c 是如何与指针数组一起使用的吗?
多一点解释总是受欢迎的!
argv
是 char*[]
类型并包含多个字符串(命令行参数)。
argv[i]
是 char*
类型并包含一个字符串。
argv[i][j]
属于 char
类型并包含一个字符。
What is the true dimension of argv? Does it stop at two or is there more?
这取决于有多少个命令行参数。
Could someone please explain how
%c
has been used with a pointer array?
可以声明 char
指针并使它们指向字符串,或者只使用 char
数组并保存字符串:
char* str="string";
或
char str[]="string";
在这两种方式中,都可以使用以下方式引用字符:
printf("%c",str[3]);
argv
其实就是char*
的数组。因此,可以从中引用单个字符。
What is the true dimension of argv? does it stop at two or is there more?
argc
告诉您参数计数(或您所说的 argv
的维数)。也就是说,argv
中的字符串数等于argc
。因此,如果提供了多个参数,argv
可以包含两个以上的字符串。例如,如果我要执行一些命令,如
$ foo file1 file2 ...
argv
看起来像
argv[0] = "foo[=11=]"
argv[1] = "file1[=11=]"
argv[2] = "file2[=11=]"
...
有关 argc
与 argv
的更多详细信息,请参阅 this other answer。
Could someone please explain how %c has been used with a pointer array?
首先,%s
用于打印字符串。 %c
用于打印单个字符。其次,argv
是一个字符串数组,而字符串只是一个字符数组 (char
)。所以,argv
实际上是一个字符数组。所以,当你看到
printf("%c\n", argv[1][2]);
代码正在打印 argv
中第二个参数的第三个字符。所以,如果我要执行命令
$ foo bar
argc
和 argv
看起来像
argc = 2
argv[0] = "foo[=14=]"
argv[1] = "bar[=14=]"
argv[1][0] = 'b'
argv[1][1] = 'a'
argv[1][2] = 'r'
argv[1][3] = '[=14=]' // null terminator
char *argv [] 是指针数组,它充当二维数组,它不能包含超过 2 维的数组。所以'argv'中的数据与2D非常相似,但没有指定限制。您可以在下面查看 link:Limit on the number of arguments to main in C
#include <stdio.h>
int main(int argc , char *argv []) {
printf("%c\n", argv [1][2]);
return 0; }
这里的 char *argv[] 与
非常相似Char argv[][] //with no argument limitation.