sizeof
sizeof是一个关键字,也是一个运算符,用于判断变量或数据类型的大小。
sizeof可以获取内置类型以及类、结构体等用户自定义数据类型的大小——单位为字节。
sizeof(data);
sizeof(data type);
strlen
strlen是C语言标准库的函数,用于计算字符串的长度,直到空结束字符,但不包括空结束字符。
#include <string.h>
size_t strlen(const char* str);
//str:要计算长度的字符串
//返回值:函数返回该字符串长度。
sizeof与strlen的区别
1.sizeof是关键字,是一个操作符;strlen是string.h库中的一个函数。
2.sizeof的结果在编译时就已经被计算出了,strlen只能在运行时计算出来。
int* a = malloc(sizeof(int));
printf("%d\n", sizeof a);
可以看到,在压栈时压入的直接就是int*类型的大小。
char s[] = "hello";
int n = strlen(s);
strlen是进入到了函数内部去计算。
3.sizeof的参数可以是变量或类型,strlen的参数只能是以'\0' 为结尾的字符串。
4.sizeof的参数如果是数据类型必须使用括号,如果是变量可以不加括号;
strlen是函数,参数必须使用括号括起来。
5.sizeof计算的是数据实际占用内存的大小;strlen计算的是字符串的长度,且不包括字符串的结束符'\0'。
6.数组名作为参数时,sizeof是将数组看作一个整体的;strlen传入的则是数组的首地址。