如何获得这样的 C 数组的元素数? [复制]

Posted

技术标签:

【中文标题】如何获得这样的 C 数组的元素数? [复制]【英文标题】:How to get the number of elements of a C-array like this? [duplicate] 【发布时间】:2013-08-08 19:10:45 【问题描述】:

我有一个这样的 C 数组:

double arr[] = 
    0.0,    0.1, 0.2, 0.5,
    0.1,    0.2, 0.3, 0.4,
    0.2,    0.0, 0.1, 0.3
;

这样获取元素数量是否安全?

int numElements = sizeof(arr)/sizeof(arr[0]);

或者有没有更好的方法?

【问题讨论】:

天哪,你是最棒的 记住这不适用于动态数组,我也explain how sizeof(arr)/sizeof(arr[0]) works/meaning 【参考方案1】:

据我所知,没有其他更好的方法,这个没有问题。 在java 中,存在锯齿状数组。如果它也在c,那么你的想法可能是正确的。

【讨论】:

【参考方案2】:

这是最好的方法。甚至在Dennis ritchieC programming 书中也有建议。

【讨论】:

【参考方案3】:

我不知道有什么其他方法可以做到这一点,因为你没有尺码。

是reliable, yes。

【讨论】:

【参考方案4】:

这是一种安全的方法,如果您查看有关数组大小的其他问题,您会发现这是最常见的建议之一

here here here

等等。

实际上在最后一个建议是这样做的

#define ARRAY_SIZE( array ) sizeof( array ) / sizeof( array[0] )

【讨论】:

以上是关于如何获得这样的 C 数组的元素数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C程中如何计算数组(一维及二维)占内存空间的大小

每次访问数组时,C 都会复制元素吗?

c语言中如何通过输入获得数组的对对应下标获得相应的数组元素数据

C语言数组如何进行元素求和?

如何复制数组中不同次数的元素?

C: unsigned char * bytes 数组将元素复制到其他 unsigned char * 数组