【发布时间】:2019-10-28 12:24:07
【问题描述】:
C 中的字符串或字符数组必须以 null 结尾才能知道它们在哪里结束。为什么相同的规则不适用于其他类型的数组? 例如。计算机如何知道整数数组的结束位置?整数/浮点数/双精度数组在内存中的表示方式有什么不同吗?
【问题讨论】:
-
C 字符串和“字符数组”不是一回事。字符数组不必以 0 结尾。
-
Why does the same rule not apply to arrays of other types?- 确实如此。一些库需要空/零/一些额外的字符分隔数据。从我的头顶,前。 getopt_long 使用以{0,0,0,0}终止的数组。碰巧“字符串”是由 C 标准定义的,而 C 标准库支持它们。 -
@KamilCuk 为什么还要去第三方库?
main中的argv已经是空指针终止的 :) -
“其他数据类型”可以包含多个零,它们是这些类型的合法成员。所以零不能是有效的数组结束标记。
-
这是一个很好的例子——
argc和argv可能是这两种方法的一个例子——你在argc中有计数,但argv仍然是空终止的。这只是一个约定。它用于最适合用例的情况。