有没有办法找出一个数组有多少个值?检测是否已经到达数组的末尾也可以工作。
当前回答
假设在页面顶部声明了一个全局数组
int global[] = { 1, 2, 3, 4 };
要找出数组中有多少个元素(在c++中),输入以下代码:
sizeof(global) / 4;
sizeof(NAME_OF_ARRAY) / 4将返回给定数组名的元素数量。
其他回答
答:
int number_of_elements = sizeof(array)/sizeof(array[0])
解释:
由于编译器为每种类型的数据设置了特定大小的内存块,而数组只是这些数据的一组,因此只需将数组的大小除以数据类型的大小。如果我有一个包含30个字符串的数组,我的系统会为数组的每个元素(字符串)留出24个字节。在30个元素时,总共是720个字节。720/24 == 30个元素。这个小而紧凑的算法是:
Int number_of_elements = sizeof(array)/sizeof(array[0]),这相当于
Number_of_elements = 720/24
请注意,您不需要知道数组是什么数据类型,即使它是自定义数据类型。
你有很多选项可以用来获取C数组的大小。
int myArray[] = {0, 1, 2, 3, 4, 5, 7};
1) sizeof(<array>) / sizeof(<type>):
std::cout << "Size:" << sizeof(myArray) / sizeof(int) << std::endl;
2) sizeof(<array>) / sizeof(*<array>):
std::cout << "Size:" << sizeof(myArray) / sizeof(*myArray) << std::endl;
3) sizeof(<数组>)/ sizeof(<数组>[<元素>]):
std::cout << "Size:" << sizeof(myArray) / sizeof(myArray[0]) << std::endl;
我在这里提供了一个棘手的解决方案:
你总是可以在第一个元素中存储长度:
// malloc/new
arr[0] = length;
arr++;
// do anything.
int len = *(arr-1);
free(--arr);
代价是在调用free时必须—arr
您可以使用sizeof()操作符,该操作符用于相同的目的。
请参阅下面的示例代码
#include <iostream>
using namespace std;
int main() {
int arr[] = {10,20,30,40,50,60};
int arrSize = sizeof(arr)/sizeof(arr[0]);
cout << "The size of the array is: " << arrSize;
return 0;
}
给你:
#include <iostream>
using namespace std;
int main() {
int arr[] = {10,20,30,40,50,60};
int arrSize = sizeof(arr)/sizeof(arr[0]);
cout << "The size of the array is: " << arrSize;
return 0;
}