C语言中 strlen()与 sizeof() 的区分

首先大家看一下两段代码

折半查找

//折半查找


#include<stdio.h>

int main()
{

	int arr[10] = { 2,3,5,6,7,9,14,21,25,26 };
	int k = 26;
	int size = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = size - 1;
	while (left<=right)
	{
		int mid = (left + right) / 2;
		if (arr[mid]<k)
		{
			left = mid + 1;

		}
		else if (arr[mid]>k)
		{
			right = mid - 1;
		}
		else
		{
			printf("找到了,下标是%d\n", mid);
			break;
		}
	}
	if (left>right)
	{
		printf("找不到");
	}
	return 0;
}

 折半查找时,求数组大小用的是 

int size = sizeof(arr) / sizeof(arr[0])

 用数组整体大小除以元素大小,得出元素个数

字符从两边分开



//字符从两边向中间展开

#include<stdio.h>
#include<Windows.h>

int main()
{
	char arr1[] = "mo yu yi shu jia niu bi !!!";
	char arr2[] = "***************************";
	int left = 0;
	int right = strlen(arr1) - 1;
	/*int right= sizeof(arr1)/sizeof(arr1[0])-2*/
	while (left<=right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(99);
		left++;
		right--;
	}
	return 0;

}

 在这段代码中,用的是strlen(),   (     sizeof()代码已写出     )

总结

#include<stdio.h>

int main()
{
	int arr1[] = { 4,5,6,3,2,1,5,6,9 };
	char arr2[] = "moyuyishujia";

	int a1 = strlen(arr1);
	//strlen只能求字符串长度,不包含结尾空字符\0

	int b1 = strlen(arr2);
	//标准的strlen求字符串长度 预测输出为 12

	int a2 = sizeof(arr1) / sizeof(arr1[0]);
	//求数组元素个数 预测输出为 9

	int b2 = sizeof(arr2) / sizeof(arr2[0]);
	//求字符串个数,由于sizeof包含最后空字符\0,故预测结果为 13

	printf("a1=%d b1=%d a2=%d b2=%d", a1, b1, a2, b2);
	return 0;
}

sizeof()函数用于计算数据类型或变量的大小,可以用于任何类型的计算,返回的是字节数。 
strlen()函数用于计算字符串的长度,只能用于以空字符结尾的字符串,返回的是字符个数。

猜你喜欢

转载自blog.csdn.net/weixin_51345015/article/details/134065657