很多小白刚刚接触C语言的时候,总是会混淆sizeof()与strlen()的区别和用法,接下来呢,蔡姐就带小白们深入了解一下这两个东西。
区别
1.sizeof是C语言中的一个单目运算符,用来计算数据类型所占空间的大小,单位为字节;而strlen是一个函数,用来计算字符串长度。
2.sizeof()
#include <stdio.h>
int main()
{//计算各种数据类型所占空间的大小
printf("int=%d\n",sizeof(int));
printf("char=%d\n",sizeof(char));
printf("float=%d\n",sizeof(float));
printf("double=%d\n",sizeof(double));
printf("short=%d\n",sizeof(short));
printf("long=%d\n",sizeof(long));
printf("long double=%d\n",sizeof(long double));
return 0;
}
另外,我们思考一个问题,指针变量所占空间大小为多少字节呢?(可能有些小白还未涉及到指针)答案是:4个字节;为什么呢?因为指针就是地址呀,所以指针里面放的都是地址,而地址的长度当前是由地址总线的位数决定的,现在的计算机一般都是32位的地址总线,也就是占4个字节
?3.strlen()
是一个函数,需要引用头文件#include <string.h>,求字符串长度,返回计算的字符串的实际长度,即不包括‘\0’在内的实际字符的长度。
若没有引用头文件,将会出现如下警告:
我们插入代码,来看看二者的区别
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[]="abcd";//d的后面自动补上\0;
char arr2[]={'a','b','c','d'};//以单个元素赋值,没有\0的结束符
printf("strlen1=%d\n",strlen(arr1));//strlen()计算\0之前的字符长度
printf("strlen2=%d\n",strlen(arr2));//该处计算结果应为随机值,因为arr2[]没定义元素个数,就无法知道在哪能遇到\0;
printf("sizeof1=%d\n",sizeof(arr1));//计算了包含\0的数据空间大小
printf("sizeof2=%d\n",sizeof(arr2));
return 0;
}
?
?总结摘要:sizeof就是一个计算数据类型所占空间大小的单目运算符,在计算字符串的空间大小时,包含了结束符\0的位置;而strlen是一个计算字符串长度的函数,使用时需要引用头文件#include <string.h>,不包含\0,即计算\0之前的字符串长度。欧耶!
|