C语法看一下sizeof和strlen
程序员文章站
2022-06-16 18:00:48
sizeof和strlen的区别1.sizeof是操作符,strlen是库函数2.sizeof的返回值是size_t,是无符号的,保证能容纳建立的最大对象的所占内存字节大小typedef unsigned int size_tsize_t是无符号的,并且与平台无关,表示0-MAXINT的范围size_t是标准规定的一个同义词,它的定义放在stddef.h里面,不同的环境下,可以是typedef unsigned size_t;也可以是typedef unsigned long size_...
这里是引用
sizeof和strlen的区别
1.sizeof是操作符,strlen是库函数
2.sizeof的返回值是size_t,是无符号的,保证能容纳建立的最大对象的所占内存 字节大小
typedef unsigned int size_t
size_t是无符号的,并且与平台无关,表示0-MAXINT的范围
size_t是标准规定的一个同义词,它的定义放在stddef.h里面,不同的环境下,
可以是
typedef unsigned size_t;
也可以是
typedef unsigned long size_t;
3.sizeof可以用类型做参数,还可以用函数做参数,strlen只能用char*类型做参数,并且要以\0结尾
short func();
printf("%d\n", sizeof(func()));
//输出的结果是sizeof(short),2
4.数组做sizeof的参数不退化,做strlen的参数退化为指针
5.sizeof在编译阶段就进行长度计算了,(数组的大小在编译期间给出),strlen在运行时计算长度,计算的是字符串的长度,不是数组在内存中实际的占用大小
int a[3][4] = {0};
printf("%d\n",sizeof(a[3])); //16 a[3]不参与运算,sizeof只计算大小。数组大小时在预编译阶段确定。
6.sizeof计算字符串长度是包括\0在内的,strlen计算长度时不包括\0
char s[] = "Helloworld";
printf("strlen(%s) = %d\n", s, strlen(s));
printf("sizeof(%s) = %d\n", s, sizeof(s));
结果:
strlen(Helloworld) = 10
sizeof(Helloworld) = 11
7.sizeof会计算到字符串最后一个空字符\0并结束,而strlen如果遇到第一个空字符\0的话就会停止并计算遇到的第一个空字符\0前面的长度。
本文地址:https://blog.csdn.net/qq_44978057/article/details/110091851
上一篇: 破解+内核书单视频教程推荐
推荐阅读