C语言--数组的长度计算【详细解释】

C语言--数组的长度计算【详细解释】_第1张图片


 一.数组的长度计算公式

我们都知道字符串有特定的函数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;
}

C语言--数组的长度计算【详细解释】_第2张图片


 三.在函数中如何计算数组的长度

这个公式是不可以在函数中使用的,因为数组传参的时候传的是首元素的地址,因此不可以使用。那我们在函数中传数组,必须要传递两个东西:

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;
}

C语言--数组的长度计算【详细解释】_第3张图片

正确的传参方式:

//正确的演示
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;
}

C语言--数组的长度计算【详细解释】_第4张图片


 创作不易, 如果这份博客对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦。
祝各位生活愉快⭐

你可能感兴趣的:(C语言学习,c语言,开发语言)