【发布时间】:2016-08-23 08:16:25
【问题描述】:
我正在阅读 C Primer Plus 中关于命令行参数 argv 的部分,但我很难理解这句话。
上面写着,
程序将命令行字符串存储在内存中,并存储 指针数组中每个字符串的地址。这个地址 数组存储在第二个参数中。按照惯例,这个指针指向 指针被称为
argv,用于参数值。
这是否意味着命令行字符串作为指向char 数组的指针数组存储在内存中?
【问题讨论】:
-
Does this mean that the command line strings are stored in memory as an array of pointers to array of char?是的。恕我直言,整个混乱是由The program stores the command line strings in memory ...引起的;关键是所有这些都发生在main() 被调用之前。 Main() 只是一个函数,它使用两个参数调用:一个 int 和一个指向字符串指针数组的指针。 -
@joop argv 不是“指向字符串指针数组的指针”,如果我们是迂腐的话。这整个问题实际上是关于“指向数组的指针”和“指向数组的第一个元素的指针”之间的区别。
-
恕我直言,OP 的混淆是关于设置 args 的外部(“crt0”)和接收它的内部(main())。这也是(感知:腐烂)类型之间差异的原因。真的。
-
@joop 这是一个“语言律师”问题,这意味着它是关于标准 C 的,其中没有“crt0”并且参数的设置无关紧要,只要 @987654326 @ 行为与 C 标准中指定的一样
-
后来添加了“language-lawyer”标签(由不了解问题的性质的人,恕我直言)我引用“crt0”是有原因的。真的。
标签: c arrays pointers language-lawyer argv