Vous devez poser des questions sur int main(int argc, char *argv[]) 吧。其实你想这么写也完全没有什么问题的 int main(int argc, char **argv).
Si vous définissez un char *s = '2333',那这个 s 指的是什么?字符串的首地址吧。同理,*argv[1], que stocke-t-il ? La première adresse de la première chaîne. Vous pouvez simplement le comprendre de cette façon, et si vous souhaitez approfondir, vous pouvez lire le livre.
char *s = "23333";
char *z = "34444";
char *argv[] = {s, z};
int a = 0;
int b = 1;
int c[] = {a, b};
C'est intéressant~ En fait, parfois, si on veut comprendre, il suffit de changer sa façon d'écrire.
char *argv[]是一个数组,数组的元素是char *,每一个char *都用于指向一个字符串的首地址。所以argv[1]就是指向第二个字符串的首地址(我们假设第一个字符串是argv[0])。所以说,argv[1] est aussi une adresse, qui est la première adresse d'une chaîne.
Les tableaux et les pointeurs ne peuvent être considérés comme identiques que lorsqu'ils sont utilisés comme paramètres de fonction, donc char *argv[]也可以写成char **argv ici, je ne sais pas si c'est plus facile à comprendre.
Voici*argv[]定义的是指针数组,有n个指针类型的数组元素(argv[0],argv[1],...,argv[n]) (argv[1]是指针数组的第2个元素,仍是一个指针,*(argv+1) la valeur pointée par le deuxième élément du tableau de pointeurs, qui est une valeur. )
argv[1] équivaut à *(argv+1)
Vous devez poser des questions sur
int main(int argc, char *argv[])
吧。其实你想这么写也完全没有什么问题的int main(int argc, char **argv)
.Si vous définissez un
char *s = '2333'
,那这个s
指的是什么?字符串的首地址吧。同理,*argv[1]
, que stocke-t-il ? La première adresse de la première chaîne. Vous pouvez simplement le comprendre de cette façon, et si vous souhaitez approfondir, vous pouvez lire le livre.C'est intéressant~ En fait, parfois, si on veut comprendre, il suffit de changer sa façon d'écrire.
L'affiche originale veut dire
en
*argv[]
, non ?char *argv[]
是一个数组,数组的元素是char *
,每一个char *
都用于指向一个字符串的首地址。所以argv[1]就是指向第二个字符串的首地址(我们假设第一个字符串是argv[0])。所以说,argv[1]
est aussi une adresse, qui est la première adresse d'une chaîne.Les tableaux et les pointeurs ne peuvent être considérés comme identiques que lorsqu'ils sont utilisés comme paramètres de fonction, donc
char *argv[]
也可以写成char **argv
ici, je ne sais pas si c'est plus facile à comprendre.Le type lors du passage des paramètres est *argv[], ce qui équivaut à **argv, qui est un pointeur vers un pointeur
Voici
La valeur de*argv[]
定义的是指针数组,有n个指针类型的数组元素(argv[0],argv[1],...,argv[n]
)(
argv[1]
是指针数组的第2个元素,仍是一个指针,*(argv+1)
la valeur pointée par le deuxième élément du tableau de pointeurs, qui est une valeur. )argv[1]
是地址,具体怎么调用,要结合具体的上下文代码来分析。一般会把
argv[1]
放在另一个指针里int *p = (int*)argv[1];
,然后下文*p
取得*argv[1]
.Le nom du tableau est en fait une adresse, il n'y a donc rien de mal à l'utiliser de cette façon.
En langage C, un tableau est à l'origine une adresse