【发布时间】:2011-04-04 12:12:29
【问题描述】:
这可能是一个愚蠢的问题,但是当您不传入数组中元素的数量时,sizeof 运算符如何知道数组操作数的大小。我知道它不会返回数组中的总元素,而是返回字节的大小,但要得到它仍然必须知道数组何时结束。只是好奇这是如何工作的。
【问题讨论】:
-
+1 表示
sizeof是编译时运算符,-1 表示它在运行时跟踪指针指向的数组大小。 -
我想 +1 所有那些说它也是编译时运算符的答案。但遗憾的是,他们不认为这个也被标记为“c”,并且应该详细说明 C 的 VLA,其中
sizeof需要评估其参数并产生运行时值以获取大小。所以我 +1 代表 c++ 部分,-1 代表回答问题的 C 部分,我总共得到 0 票。 -
@Johannes:虽然确实如此,但绝大多数 C 代码仍然是 C89/C90 代码,其中不允许使用 VLA。
-
@Billy 即使是这样,也不会使我的观点无效。但我怀疑。混合代码/声明是 c99,仍然有很多人这样做,并且经常阅读人们使用运行时
i编写i,甚至没有考虑 C99 - 他们认为这是老式 C。鉴于这个问题,我我什至不确定@marchinram 是否知道其中的区别,因此告诉他这一点更为重要。