0

您认为哪种方式更好地在 main 函数中声明 argv 参数,为什么?

int main(int argc, char **argv /* char *argv[] */ /* char (*argv)[] */) {
    //...
}

argv 最终作为指针进入函数 - 只是作为 argv 地址的副本,而不是作为数组,对吗?所以我认为,其他替代方案在语法上也必须是正确的,但你更喜欢哪种方式?

问候

4

4 回答 4

6

char *argv[]最明确的含义是 - 一个字符串数组。

char **argv如果你很懒,打字速度最快。

char (*argv)[]我不确定你为什么要使用。

于 2011-11-11T08:49:01.670 回答
3

使用*argv[]是传统方式,但我也看到过使用**argv的程序。

变体(*argv)[]实际上是相反的*argv[],第一个是指向数组的指针(在这种情况下是错误的),最后一个是指针数组。

于 2011-11-11T08:52:03.340 回答
2

我个人更喜欢

char *argv[]

因为它描述argv得更好,IMO。它是一个数组char*,也就是一个字符串数组,这正是我所期望argv的。不是双指针。第三种变体似乎没问题,相当于第二种。

于 2011-11-11T08:49:44.883 回答
1

我喜欢char *argv[],因为它是实际传递的最清晰的表达;指向字符串的指针数组。

char **argv更简洁,但我觉得“指向指针的指针”并不能准确地描述正在传递的内容。

第三个选项中的额外括号只会使事情变得混乱。

于 2011-11-11T08:53:17.980 回答