【发布时间】:2013-04-30 02:46:40
【问题描述】:
假设我有以下数组:
int list[3]={2,8,9};
printf("%p,%p,%p",(void*)&list[0],(void*)&list[1],(void*)&list[2]);
是否总是保证 &list[0] ?
我在使用 C 时认为这是一条硬性规定,但现在必须非常确定,因为当我回答他关于 endianness 的问题时,OP 刚刚问过我这个问题
让我重新考虑的是stacks can grow up or down 问题。我对此不太确定,因此感谢您的严谨回答。谢谢。
【问题讨论】:
-
&(list[n])我认为每个标准相当于list+n。 C 中的数组索引符号只不过是向指针添加值的简写。以确保+工作的方式保留内存 -
您是在询问事物在 C 中的显示方式或它们在内存中的实际情况?
-
@EricPostpischil 通过评论简单地告诉我你对两者的看法。虽然我对实际记忆更感兴趣。
-
数组在 C 模型中是连续的和升序的。该标准对物理实现没有任何要求。
-
您应该指定一个或另一个,以便答案与问题相匹配。如果您想了解两者,请使用两个问题。
标签: c arrays stack memory-address