475 字
2 分钟
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; }

4.总结摘要
sizeof就是一个计算数据类型所占空间大小的单目运算符,在计算字符串的空间大小时,包含了结束符\0的位置;而strlen是一个计算字符串长度的函数,使用时需要引用头文件#include <string.h>,不包含\0,即计算\0之前的字符串长度。
Sizeof和strlen
https://fuwari.cbba.top/posts/sizeof和strlen/