如何确定C语言中数组的大小?
也就是说,数组可以容纳多少元素?
如何确定C语言中数组的大小?
也就是说,数组可以容纳多少元素?
当前回答
“你这是搬起石头砸自己的脚。”
C 'native'数组不存储它们的大小。因此,建议将数组的长度保存在单独的变量/const中,并在传递数组时传递它,即:
#define MY_ARRAY_LENGTH 15
int myArray[MY_ARRAY_LENGTH];
如果你正在编写c++,无论如何你都应该避免本机数组(除非你不能,在这种情况下,小心脚下)。如果你正在编写c++,请使用STL的“vector”容器。“与数组相比,它们提供了几乎相同的性能”,而且它们更有用!
// vector is a template, the <int> means it is a vector of ints
vector<int> numbers;
// push_back() puts a new value at the end (or back) of the vector
for (int i = 0; i < 10; i++)
numbers.push_back(i);
// Determine the size of the array
cout << numbers.size();
看到的: http://www.cplusplus.com/reference/stl/vector/
其他回答
如果你知道数组的数据类型,你可以像这样使用:
int arr[] = {23, 12, 423, 43, 21, 43, 65, 76, 22};
int noofele = sizeof(arr)/sizeof(int);
或者如果你不知道数组的数据类型,你可以使用类似这样的东西:
noofele = sizeof(arr)/sizeof(arr[0]);
注意:只有当数组在运行时没有定义(如malloc)并且数组没有传递到函数中时,这个东西才有效。在这两种情况下,arr(数组名)都是指针。
最好的方法是保存这些信息,例如,在一个结构中:
typedef struct {
int *array;
int elements;
} list_s;
实现所有必要的功能,如创建、销毁、检查是否相等以及其他所有需要的功能。它更容易作为参数传递。
sizeof(array) / sizeof(array[0])
最简单的答案:
#include <stdio.h>
int main(void) {
int a[] = {2,3,4,5,4,5,6,78,9,91,435,4,5,76,7,34}; // For example only
int size;
size = sizeof(a)/sizeof(a[0]); // Method
printf("size = %d", size);
return 0;
}
C中数组的大小:
int a[10];
size_t size_of_array = sizeof(a); // Size of array a
int n = sizeof (a) / sizeof (a[0]); // Number of elements in array a
size_t size_of_element = sizeof(a[0]); // Size of each element in array a
// Size of each element = size of type