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() 的重要区别:

Difference between strlen() and 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)