📜  查找数组的长度 c++ (1)

📅  最后修改于: 2023-12-03 15:40:24.537000             🧑  作者: Mango

查找数组的长度

在C++中,数组是一种常见的数据类型,而要在程序中使用数组,我们需要知道数组的长度。本文将介绍如何查找C++中数组的长度。

常量数组长度

如果数组是常量数组,则可以使用以下方法查找数组的长度:

int arr[10];
int length = sizeof(arr) / sizeof(arr[0]);

在以上代码中,sizeof(arr)返回整个数组在内存中占用的字节数,sizeof(arr[0])返回数组中一个元素在内存中占用的字节数。因此,两者相除就得到了数组的长度。

非常量数组长度

如果数组不是一个常量数组,我们无法使用上述方法查找数组的长度。在这种情况下,我们需要手动记录数组的长度。在创建数组时,我们可以将数组的长度存储在一个变量中:

int arr[10];
int length = 10;

在以上代码中,我们在创建数组时显式指定了数组的长度为10,并将其存储在变量length中。

如果数组的长度是在运行时动态分配的,可以使用动态内存分配函数newdelete来创建和销毁数组指针,同时使用指针解除引用语法来访问数组元素。我们还需要使用一个变量来记录数组的长度:

int* arr = new int[10];
int length = 10;
// 访问数组元素
arr[0] = 1;
// 释放内存
delete[] arr;

在以上代码中,我们使用new函数动态分配了一个包含10个元素的整型数组,并将其存储在指针变量arr中。我们还记录了数组的长度为10。对数组元素的访问方式和常规数组相同。注意,我们需要使用delete[]来释放内存,而不是delete,因为数组是动态分配的。

在使用动态分配数组时,还可以使用异常机制来捕获内存分配失败的情况。当内存分配失败时,new函数将抛出一个std::bad_alloc异常。可以使用try...catch语句来捕获该异常:

try {
  int* arr = new int[1000000000];
} catch (const std::bad_alloc& e) {
  std::cout << "内存分配失败:" << e.what() << std::endl;
}

在以上代码中,我们使用try...catch语句来捕获由new函数抛出的std::bad_alloc异常。当内存分配失败时,程序将跳转到catch块,并输出错误信息。注意,我们使用了const关键字来表示异常对象是一个常量对象,从而防止在异常处理期间修改该对象。