一.数组的长度计算公式
我们都知道字符串有特定的函数strlen,而数组没有,(虽然字符串也是一种特殊的数组)
但是,类似于这样的数组:
int arr[]={12,89,1,5,31,78,45,12,12,0,45,142,21,12};
我们很难一眼就看出来数组的长度。所以我们需要一个公式。
先看一下这个小学题目:一个苹果5元,小明有20元,问他能买几个苹果?
很容易:20除以5==4(个)
同样类比到这里,当我们知道数组的总大小,再除以单个元素的大小,不就得到了数组的个数了。
公式:sizeof(arr)/sizeof(arr[0]);
二.例子
int main()
{
int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };
int len = sizeof(arr) / sizeof(arr[0]);
printf("数组的长度是%d", len);
return 0;
}
三.在函数中如何计算数组的长度
这个公式是不可以在函数中使用的,因为数组传参的时候传的是首元素的地址,因此不可以使用。那我们在函数中传数组,必须要传递两个东西:
1.数组的首元素地址
2.数组的长度
下面通过一个代码看一下区别
void test(int arr[])
{
int len = sizeof(arr) / sizeof(int);//2,x64的指针是8个字节
printf("函数中的数组长度%d\n", len);
}
int main()
{
int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };//14个
int len = sizeof(arr) / sizeof(arr[0]);
test(arr);
printf("主函数中的数组的长度是%d", len);
return 0;
}
正确的传参方式:
//正确的演示
void test(int arr[],int len)
{
printf("函数中的数组长度%d\n", len);
}
int main()
{
int arr[] = { 12,89,1,5,31,78,45,12,12,0,45,142,21,12 };//14
int len = sizeof(arr) / sizeof(arr[0]);
test(arr,len);
printf("主函数中的数组的长度是%d", len);
return 0;
}
创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐