如何在c中获取数组的长度[重复]
Posted
技术标签:
【中文标题】如何在c中获取数组的长度[重复]【英文标题】:How can i get the length of an array in c [duplicate] 【发布时间】:2016-05-20 00:29:24 【问题描述】:我已经声明了一个只有三个元素的 int 数组,但我注意到我可以访问更大的数组索引
int x[3];
int length = sizeof(x)/sizeof(x[0]);
printf("\n the length defined is %i but I can still setting and getting other indexes")
【问题讨论】:
也许this question 会有所帮助。 【参考方案1】:使 C 快速的一件事是它不对数组进行任何类型的边界检查。它希望程序员知道他们在做什么以保持在适当的范围内。
不这样做意味着访问数组边界之外的一部分内存并导致undefined behavior。
【讨论】:
【参考方案2】:当访问一个大于数组长度的索引时,你实际上是在“侵入”一个你不应该访问的内存区域。这可能会导致您的应用程序出现意外行为或崩溃。
【讨论】:
我明白,但你知道为什么会这样吗? 数组大小声明是关于将分配多少内存。但是,当访问分配的内存时,由开发人员控制在内存区域中读取/写入的位置。编译器不会检查开发者是否在访问合法的内存区域。以上是关于如何在c中获取数组的长度[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在从 C 到 C# 的结构中获取非托管可变长度 C 数组?
我如何在Javascript中拥有可变长度数组的前3个元素[重复]