您认为在主函数中声明argv参数的方式更好,为什么?
int main(int argc, char **argv /* char *argv[] */ /* char (*argv)[] */) {
//...
}
argv最终作为指针进入函数——只是作为argv地址的副本,但不是作为数组,对吧?所以我认为,其他备选方案在语法上也必须正确,但你更喜欢哪种方式?
问候
char *argv[]
是最明确的含义——字符串数组。
如果你懒惰的话,char **argv
是打字最快的。
char (*argv)[]
我不知道你为什么要用。
使用*argv[]
是传统的方式,但我也见过使用**argv
的程序。
变体(*argv)[]
实际上与*argv[]
相反,第一个是指向数组的指针(在这种情况下是错误的(,最后一个是指针数组。
我个人更喜欢
char *argv[]
因为它更好地描述了argv
,IMO。它是char*
的数组,也就是字符串的数组,这就是我所期望的argv
。不是双指针。第三种变体似乎还可以,与第二种变体相当。
我喜欢char *argv[]
,因为它是实际传递内容的最清晰表达式;指向字符串的指针数组。
char **argv
更为一致,但我觉得"指针对指针"并不能准确地描述正在传递的内容。
第三个选项中多余的括号只是混淆了事情。