您认为哪种方式更好地在 main 函数中声明 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
更简洁,但我觉得“指向指针的指针”并不能准确地描述正在传递的内容。
第三个选项中的额外括号只会使事情变得混乱。