目录
1 strlen函数
2 sizeof函数
3 sizeof 和 strlen 的作用和区别(面试必问)
3.1 作用
3.2 主要区别
1 strlen函数
strlen()
函数是 C 语言标准库中的一个函数,用于计算字符串的长度。它不包括字符串末尾的空字符('\0'
),这是字符串结束的标准表示方法。函数原型:
#include <string.h>
size_t strlen(const char *s);
s
是指向要计算长度的字符串的指针。- 函数返回一个
size_t
类型的值,表示字符串的长度。
下面的示例程序提示用户输入一个字符串,然后计算并输出该字符串的长度:
#include <stdio.h>
#include <string.h>
int main()
{
char inputString[101]; // 定义一个足够大的数组以存储输入的字符串和空字符
// 提示用户输入一个字符串
printf("Please enter a string: ");
fgets(inputString, sizeof(inputString), stdin); // 使用 fgets 读取一行文本
// 计算字符串长度,去除末尾的换行符
size_t length = strlen(inputString);
if (inputString[length - 1] == '\n') {
inputString[length - 1] = '\0'; // 将换行符替换为空字符
--length; // 减去换行符的字符数
}
// 输出字符串长度
printf("The length of the string is: %zu\n", length);
return 0;
}
程序首先定义了一个字符数组 inputString
,大小为 101,确保有足够的空间存储用户的输入和字符串结束的空字符。然后使用 fgets()
函数读取用户输入的一行文本,包括空格。fgets()
会将输入的文本和末尾的换行符一起存储在 inputString
中。
接下来,程序使用 strlen()
函数计算字符串的长度。如果字符串的最后一个字符是换行符('\n'
),程序会将其替换为字符串结束的空字符('\0'
),并从长度中减去这个字符。最后,程序输出字符串的长度。这里使用 %zu
作为 size_t
类型的格式化输出占位符。
运行结果如下:
2 sizeof函数
sizeof
运算符是 C 语言中的一个关键字,用于确定变量或数据类型在内存中的大小(以字节为单位)。它是一个编译时运算符,这意味着它在编译代码时计算大小,而不是在程序运行时。
基本用法:
- 对于数据类型:
sizeof
可以确定任何数据类型的大小。例如,sizeof(int)
将给出int
类型在当前平台上的大小。 - 对于变量:
sizeof
可以确定任何变量的大小。例如,sizeof(variableName)
将给出variableName
变量的大小。
示例程序:
#include <stdio.h>
int main() {
int integerValue = 10;
double doubleValue = 3.14;
char charValue = 'a';
// 打印不同类型变量的大小
printf("Size of integer: %zu bytes\n", sizeof(integerValue));
printf("Size of double: %zu bytes\n", sizeof(doubleValue));
printf("Size of char: %zu bytes\n", sizeof(charValue));
// 打印类型本身的大小
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of double: %zu bytes\n", sizeof(double));
printf("Size of char: %zu bytes\n", sizeof(char));
return 0;
}
sizeof
运算符被用来打印不同类型变量和类型本身的大小。注意,sizeof
的返回类型是 size_t
,这是一个无符号整数类型,通常用于表示大小。运行结果如下:
3 sizeof 和 strlen 的作用和区别(面试必问)
3.1 作用
sizeof
运算符:
sizeof
是 C 语言的关键字,用于确定变量或数据类型在内存中的大小,以字节为单位。- 它是一个编译时运算符,意味着它在编译代码时就确定了大小。
sizeof
可以用于任何数据类型或变量,例如sizeof(int)
或sizeof(variableName)
。sizeof
的结果是一个size_t
类型的值,表示内存大小。
strlen
函数:
strlen
是标准 C 库中的一个函数,用于计算以空字符('\0'
)结尾的字符串的长度。- 它是一个运行时函数,需要在程序执行时调用。
strlen
只能用于以空字符结尾的字符串,例如strlen("Hello, World!")
。strlen
会遍历字符串中的每个字符,直到遇到空字符(是'\0',
不是空格),然后返回从字符串开始到空字符之前的字符数量。
3.2 主要区别
- 作用域:
sizeof
可以用于任何类型和变量,而strlen
仅用于以空字符结尾的字符串。 - 作用:
sizeof
给出的是变量或类型在内存中占用的总字节数,而strlen
给出的是字符串中字符的数量(不包括结尾的空字符)。 - 时间:
sizeof
是编译时确定的,strlen
是运行时计算的。 - 返回类型:
sizeof
的结果类型是size_t
,而strlen
的返回类型是size_t
或unsigned int
(取决于实现)。