C:主函数中的Argv声明

时间:2011-11-11 08:45:15

标签: c main argv

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

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

argv最终作为指针进入函数 - 就像argv地址的副本一样,但不是数组,对吧?所以我认为,其他选择也必须在语法上正确,但你更喜欢哪种方式?

此致

4 个答案:

答案 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更加简洁,但我觉得“指针指针”并不能准确地描述传递的内容。

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