百科知识

想知道sizeof和strlen到底怎么用?它们求长度的方式大不同!

`sizeof` 和 `strlen` 是 C 语言中两个常用于获取长度或大小的函数,但它们的工作方式和应用场景有很大不同。

`sizeof` 是一个操作符,用于计算变量、数据类型或数组占用的内存空间大小,单位是字节。它适用于所有数据类型,包括基本数据类型(如 `int`、`float`)和复合数据类型(如数组、结构体)。例如,`int a; sizeof(a)` 会返回 `int` 类型在当前系统上占用的字节数。对于数组,`sizeof` 会返回整个数组占用的总字节数,而不仅仅是数组的长度。

“`c

int arr[10];

printf(“Array size: %zu bytes\n”, sizeof(arr)); // 输出数组占用的总字节数

“`

`strlen` 是一个函数,用于计算以 null 字符 (`\0`) 结尾的字符串的长度,单位是字符数。它只适用于以 null 结尾的字符串字面量或字符数组。`strlen` 函数会遍历字符串,直到遇到 null 字符为止,并返回遍历的字符数。例如:

“`c

char str[] = “Hello, World!”;

printf(“String length: %zu\n”, strlen(str)); // 输出字符串的字符数

“`

需要注意的是,`strlen` 函数不会计算 null 字符本身,只计算字符串中的可见字符数。

总结来说,`sizeof` 用于计算内存占用大小,适用于任何数据类型,而 `strlen` 用于计算以 null 结尾的字符串的长度,只适用于字符串。在实际编程中,应根据具体需求选择合适的函数。