C 语言中 strlen() 和 sizeof() 对于字符串的区别
什么是 strlen()?
strlen() 是一个用于查找字符串长度的函数。它计算字符串中存在的字符总数,但会排除空字符。字符串中的字符总数包括字母、特殊字符和数字,以及空格。
什么是 sizeof()?
sizeof() 是一个用于计算其操作数大小的函数。它返回特定变量的大小。此函数可应用于任何数据类型,包括像整数和指针类型、浮点类型、结构或联合这样的基本类型。包含 sizeof() 的程序的输出在 32 位系统和 64 位系统上可能不同。
主要区别
- Strlen 方法用于查找数组的长度,而 sizeof() 方法用于查找数据的实际大小。
- Strlen() 计算字符串中的字符数,而 sizeof() 返回操作数的大小。
- Strlen() 查找变量的空值,但 sizeof() 不关心变量的值。
- strlen() 的返回值是 long int,而 sizeof() 的返回值是 unsigned int。
strlen() 的语法
strcount = strlen(my_string);
这里,my_string 是一个字符数组变量。
strlen() 示例
在下面的 C 程序中,我们声明了一个 char 类型的字符串变量。将 strng 变量作为 strlen() 函数的参数传递,以查找字符串的长度。
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
输出
Length of given string is: 7
sizeof() 的语法
语法 1)
sizeof(type): Type = 引用类型
sizeof(type) 示例
在下面的代码中,&type 给出了变量 (double x) 的地址。将其加 1,得到可以存储下一个 x 类型变量的地址。
通过将 x 类型转换为 char* 并计算差值,可以知道内存中存储的 char 类型变量的总数。我们使用 getchar() 来读取字符。
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
输出
8
语法 2)
sizeof(variable-name): Variable-name = 您要确定大小的变量名称。
在下面的 C 程序中,我们正在打印 char 数据类型的大小。Printf 语句包含带有 char 参数的 sizeof 函数。
sizeof(variable-name) 示例
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
输出
sizeof(char) = 1
语法 3)
sizeof(expression): Expression = 您要计算的表达式。
sizeof(expression) 示例
在下面的程序中,我们首先计算并打印变量的大小。之后,我们计算表达式,将其存储在变量 a 中,并在 printf 语句中显示结果。
#include<stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Size of variable p : %d\n",sizeof(p)); printf("Size of an expression : %d\n",sizeof(p+q)); int a = (int)(p+q); printf("Size of explicitly converted expression : %d\n",sizeof(a)); return 0; }
输出
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
strlen() 和 sizeof() 之间的区别
以下是 strlen() 和 sizeof() 的重要区别:
strlen() | sizeof() |
---|---|
strlen() 是一个预定义的函数,它定义在名为 string.h 的头文件中。 | sizeof() 是一个一元运算符或编译时表达式,它计算变量占用的内存量。 |
此方法用于查找字符串或字符数组的长度。 | 此方法用于查找分配的实际数据大小(以字节为单位)。 |
它计算字符数,但不包括空值。 | 它返回操作数的大小,而不是字符串长度(包括空值)。 |
它在运行时分配内存并查找变量的空值。 | Sizeof() 不关心变量的值。 |
Strlen() 函数仅适用于字符字符串 | Sizeof() 函数返回分配的内存量(以字节为单位)。 |
strlen() 的返回值是 long int。 | sizeof() 的返回值是 unsigned int。 |
strlen() 只有一个语法,即 int strlen(const char *str); | sizeof() 有三种语法:1) sizeof(type),2) sizeof(variable-name),3) sizeof(expression) |