c(和objc,和c ++和objc ++) - char * argv []

时间:2014-04-22 08:33:01

标签: c arrays pointers char argv

我创建了一个echo命令的克隆,这比我想的要复杂得多。 这是我的问题: 如何运作char * argv []?我知道如何使用char myString [],但没有那种奇怪的方法来创建字符串:

  • 它是chars数组的指针,还是chars上的指针数组?
  • 为什么当我* argv [n]时,它向我展示了n个参数,而不是n个char ... Chars can ve ve

2 个答案:

答案 0 :(得分:3)

char* argv[]的行为就像char** argv一样。您也可以使用char argv[][]相同的方式。

所以基本上,当你致电*argv时,会得到argv[0]*argv[n]会给你argv[0][n]

修改:将argv[x]转换为std::string

std::string s(argv[x]);

从那时起s是标准字符串。但请记住,您必须使用零终止字符串,这对char**中的随机二进制数据无效!

答案 1 :(得分:0)

  

它是一个chars数组的指针,还是chars上的一个指针数组?

在C中,数组总是作为指向第一个元素的指针传递。因此,有效地,您可以将其视为char **,它是指向char的指针。

  

为什么当我* argv [n]时,它向我展示了n个参数,而不是n个char ... Chars can ve ve

您可以根据operator precedence

拆分该表达式
char* p = argv[n];
char  c = *p;