如何获取数组长度?

136 篇文章 ¥59.90 ¥99.00
本文介绍了在C和C++中获取数组长度的两种方法:一是使用sizeof运算符,通过计算整个数组大小除以单个元素大小得到长度;二是利用C++17及更高版本的std::size()函数。在函数参数传递时需注意数组退化为指针可能带来的差异。

在 C 和 C++ 中,可以使用不同的方法来获取数组的长度。下面我将介绍两种常用的方法。

方法一:使用 sizeof 运算符

sizeof 运算符用于获取对象或类型的大小,可以用来获取数组的长度。具体步骤如下:

  1. 声明数组并初始化:
int arr[] = {
   
   1, 2, 3, 4, 5}
在 C 语言中,**获取数组长度**(即数组中元素的个数)的常用方法是使用 `sizeof` 运算符。 --- ### ✅ 示例代码: ```c #include <stdio.h> int main() { int arr[] = {1, 2, 3, 4, 5}; // 计算数组长度 int length = sizeof(arr) / sizeof(arr[0]); printf("数组长度为: %d\n", length); return 0; } ``` --- ### 🔍 原理解释: - `sizeof(arr)`:获取整个数组占用的字节数(例如:5 个 int 类型元素 × 4 字节 = 20 字节) - `sizeof(arr[0])`:获取单个元素所占字节数(例如:int 占 4 字节) - 数组长度 = `sizeof(arr) / sizeof(arr[0])`,即总字节数 ÷ 单个元素字节数 --- ### ⚠️ 注意事项: - **只能在数组定义的作用域内使用**: ```c void func(int arr[]) { // 错误:arr 是指针,sizeof(arr) 得到的是指针大小(通常是 4 或 8 字节) int length = sizeof(arr) / sizeof(arr[0]); // ❌ 无法正确获取数组长度 } ``` 因为在函数参数中,数组会退化为指针。 - **推荐做法:手动传递数组长度** ```c void func(int arr[], int length) { for (int i = 0; i < length; i++) { printf("%d ", arr[i]); } } int main() { int arr[] = {1, 2, 3, 4, 5}; int length = sizeof(arr) / sizeof(arr[0]); func(arr, length); return 0; } ``` --- ### ✅ 总结: | 方法 | 是否有效 | 说明 | |------|----------|------| | `sizeof(arr) / sizeof(arr[0])` | ✅ | 适用于在数组定义作用域内 | | 使用指针传参后 `sizeof` | ❌ | 数组退化为指针,无法获取长度 | | 手动传入长度 | ✅ | 推荐方式,适用于函数调用 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值