如何在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个元素[重复]

数组如何绕过其声明的长度[重复]

如何在javascript中从多个数组中获取单个数组[重复]

C语言中如何获取数据长度?

C#如何在不知道新数组长度的情况下将数组中的值保存到新数组中