c++ sizeof 与 strlen差别
时间: 2023-11-12 21:17:38 浏览: 93
C语言中的`sizeof`和`strlen`是两个不同的操作符,它们用于不同的目的。
`sizeof`是一个运算符,用于计算一个对象或数据类型的大小(以字节为单位)。它可以用于计算任何数据类型(包括基本类型、数组、结构体等)的大小。例如,`sizeof(int)`将返回`4`,表示`int`类型占用4个字节。
`strlen`是一个函数,用于计算一个字符串的长度(不包括字符串末尾的空字符`\0`)。它需要一个以空字符结尾的字符数组作为参数,并返回该字符串中字符的数量。例如,如果有一个字符串`char str[] = "Hello";`,那么`strlen(str)`将返回`5`,因为这个字符串有5个字符(不包括末尾的空字符)。
因此,`sizeof`用于计算变量或数据类型的大小,而`strlen`用于计算字符串的长度。它们在功能和使用上有明显的差别。
相关问题
c++sizeof和strlen区别 并用char[]举例
在C++中,`sizeof` 和 `strlen` 是两个不同的操作符:
1. `sizeof`:这是一个运算符,用于计算某个数据类型或变量在内存中的字节数。它返回的是一个整数,表示指定对象占用的存储空间的大小,以字节为单位。例如,`sizeof(char)` 将返回 1,因为 char 类型通常占一个字节的空间。
```cpp
char str[] = "Hello";
std::cout << "Size of str array: " << sizeof(str); // 输出:Size of str array: 6 (因为字符串常量包括结束符 '\0')
```
这里 `sizeof(str)` 返回整个字符数组(包括空字符'\0')的长度。
2. `strlen`:这是`<cstring>`库中的函数,用于计算给定C风格字符串(以空字符'\0'结尾的字符数组)的实际长度,不包括空字符本身。例如:
```cpp
const char* str = "Hello";
size_t len = strlen(str);
std::cout << "Length of the string: " << len; // 输出:Length of the string: 5
```
`strlen(str)` 计算的是实际有效字符的数量。
c++中sizeof和strlen的区别
sizeof和strlen在C语言中有以下区别:
1.是一个运算符,用于计算变量或类型所占用的内存空间大小,而strlen是一个库函数,用于计算字符串中实际字符的数量。
2. sizeof在编译时计算,返回的是指定类型或变量所占用的字节数,而strlen在运行时计算,返回的是字符串的实际长度。
3. sizeof的参数可以是数组、指针、对象、函数等不同类型,而strlen的参数必须是字符型指针(传入数组时自动退化为指针)。
4. 对于不同的参数类型,sizeof返回的值表示的含义也不同,如数组表示编译时分配的数组空间大小,指针表示存储该指针所用的空间大小,在32位机器上是4,在64位机器上是8,类型表示该类型所占的空间大小,对象表示对象的实际占用空间大小,函数表示函数的返回类型所占的空间大小(不能是void)。
阅读全文