您认为哪种方式更好地在主函数中声明argv参数以及为什么?
int main(int argc, char **argv /* char *argv[] */ /* char (*argv)[] */) {
//...
}
argv最终作为指针进入函数 - 就像argv地址的副本一样,但不是数组,对吧?所以我认为,其他选择也必须在语法上正确,但你更喜欢哪种方式?
此致
答案 0 :(得分:6)
char *argv[]
最明确的含义 - 字符串数组。
char **argv
输入最快。
char (*argv)[]
我不确定你为什么要使用它。
答案 1 :(得分:3)
使用*argv[]
是传统方式,但我也看过使用**argv
的程序。
变体(*argv)[]
实际上与*argv[]
相反,第一个是指向数组的指针(在这种情况下是错误的),最后一个是指针数组。
答案 2 :(得分:2)
我个人更喜欢
char *argv[]
因为它更好地描述了argv
,IMO。它是一个char*
数组,这是一个字符串数组,这是我期望的argv
。不是双指针。第三种变体似乎没问题,相当于第二种变体。
答案 3 :(得分:1)
我喜欢char *argv[]
,因为它是实际传递内容的最清晰表达;一个指向字符串的指针数组。
char **argv
更加简洁,但我觉得“指针指针”并不能准确地描述传递的内容。
第三个选项中的额外括号只会让事情变得混乱。