在了解这两个的“东西”的区别之前,我们要首先知道这两个是啥,干啥的。
1、“sizeof”
是一个在C和C++编程语言中使用的运算符。它用于获取一个数据类型或变量所占用的内存大小(以字节为单位)。该运算符在编程中经常用于计算数据结构和数组的大小,以便在分配内存或进行内存操作时进行正确的处理。
sizeof (type) 其中,type
可以是数据类型(如int
、char
、float
等)或者是一个具体的变量名。运算符返回一个size_t
类型的值,表示给定类型或变量所占用的内存大小。
获取int类型和float类型的大小
#include <stdio.h>
int main() {
printf("Size of int: %d\n", sizeof(int));
printf("Size of float: %d\n", sizeof(float));
return 0;
}
2、“strlen”
是一个C标准库函数,用于计算字符串的长度,即字符串中字符的个数(不包括字符串末尾的空字符 \0
)。它位于<string.h>
头文件中,因此在使用该函数时需要包含这个头文件。
strlen
的原型如下:
size_t strlen(const char *str);
参数str
是一个指向以null-terminated(以空字符 \0
结尾)的C字符串的指针。函数将从传入的指针位置开始计算,直到遇到字符串末尾的空字符 \0
为止,然后返回计算得到的字符串长度,以size_t
类型(无符号整数)表示。
#include <stdio.h>
#include <string.h>
int main() {
int size1 = 0;
char *str = "Hello, World!";
size1 = strlen(str);
printf("Length of the string: %d\n", size1);
return 0;
}
那他们有那些区别呢?
区别:
(1)sizeof是一个操作符,strlen是库函数;
(2)sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为’\0’的字符串做参数;
(3)编译器在编译时就计算出了sizeof的结果。而strlen函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度;
(4)数组做sizeof的参数不退化,传递给strlen就退化为指针了。