欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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前面的长度。
C语法看一下sizeof和strlen

本文地址:https://blog.csdn.net/qq_44978057/article/details/110091851

相关标签: C的学习