首先说明:
字符串的末尾隐藏放着⼀个 \0 字符作为字符串的结束标志。
具体请看:https://blog.csdn.net/Q_97511Q/article/details/132121928
strlen函数
strlen是一个函数,在运用时需要引入<string.h>头文件。
在C语言中用于计算字符串的长度,即字符串中字符的个数。
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = { "abcd" };
printf("%d\n",strlen(arr));
}
但是需要注意的是,strlen计算的字符串长度是不包括字符串末尾的空字符'\0'的。
sizeof运算符
在C语言中sizeof是一个运算符,用于计算数据类型或变量在内存中所占的字节数
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = { "abcd" };
int arr1[] = { 1,5,4,6 };
printf("%d\n", sizeof(arr));
printf("%d", sizeof(arr1));
}
sizeof运算符在计算字符串的大小时会包括字符串末尾的空字符'\0'的。
注:char类型字节大小为1 int类型字节大小为4
用sizeof运算符求数组的长度
我们知道sizeof运算符求的是数组的所占内存的大小。然而
数组中所有元素的类型都是相同的。
那么只要计算出数组中一个元素所占字节的大小,数组的元素个数就能算出来。这⾥我们选择了第⼀个元素。
#include <stdio.h>
#include <string.h>
int main()
{
int arr1[] = { 1,5,4,6 };
printf("%d\n", sizeof(arr1));
printf("%d", sizeof(arr1)/ sizeof(arr1[0]));
}
注: int类型字节大小为4
strlen函数与sizeof运算符的区别
由于strlen函数只能计算字符串的长度,所以这里我们仅用字符串用作例子。
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = { "abcd" };
printf("%d\n", strlen(arr));
printf("%d", sizeof(arr)/sizeof(arr[0]));
}
由上图清晰可见,在计算字符型数组长度的情况下,strlen函数与sizeof运算符的唯一区别就在于strlen函数的计算是不包括字符串末尾的空字符'\0'的。
以上就是我们C语言中的strlen函数被与sizeof运算符区别的基本内容了。