C 语言中字符串 strlen() 和 sizeof() 的区别
什么是 strlen()
strlen() 是一个用于查找字符串长度的函数。它计算字符串中出现的字符总数,消除空字符。字符串中的字符总数包括字母、特殊字符和数字以及空格。
sizeof()是什么
sizeof() 是一个用于计算其操作数大小的函数。它返回特定变量的大小。此函数可应用于任何数据类型,包括整数和 指针类型、浮点类型、结构或联合。包含 sizeof() 的程序的输出在 32 位系统和 64 位系统上可能有所不同。
关键区别
- Strlen 方法用于查找数组的长度,而 sizeof() 方法用于查找数据的实际大小。
- Strlen() 计算字符串中的字符数,而 sizeof() 返回操作数的大小。
- Strlen() 查找变量的空值,但 sizeof() 不关心变量值。
- strlen() 中的返回值是长整型,另一方面,sizeof() 中的返回值是无符号整型。
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 给出了变量 (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(变量名): 变量名 = 您想要确定大小的变量的名称。
在下面的 C 程序中,我们打印 char 数据类型的大小。Printf 语句包含带有参数 char 的 sizeof 函数。
sizeof(变量名)的示例:
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
输出:
sizeof(char) = 1
语法 3)
sizeof(表达式): 表达式 = 您必须评估的表达式。
sizeof(表达式) 的示例:
在下面的程序中,我们首先计算并打印变量的大小。此后,我们评估表达式,将其存储在变量 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() 之间的重要区别:
字符串长度() | Sizeof() |
---|---|
Strlen() 是一个预定义函数,它在名为 string.h 的头文件中定义。 | Sizeof() 是一个一元运算符或编译时表达式,用于计算 变量. |
此方法用于查找字符串或字符数组的长度。 | 此方法用于查找数据(已分配)的实际大小(以字节为单位)。 |
它计算字符串中的字符数并消除空值。 | 它返回操作数的大小,而不是字符串长度(包括空值)。 |
它在运行时分配内存并寻找变量的空值。 | Sizeof() 不关心变量值。 |
Strlen() 函数仅适用于字符串 | Sizeof() 函数返回分配的内存量(以字节为单位)。 |
strlen() 的返回值是长整型。 | sizeof() 的返回值是无符号整数。 |
strlen() 的语法只有一种,即 int strlen(const char *str); | sizeof() 有三种语法 1) sizeof(type),2) sizeof(variable-name),和 3) sizeof(expression): |