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

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):