ความแตกต่างระหว่าง strlen() และ sizeof() สำหรับสตริงใน C

strlen() คืออะไร

strlen() คือฟังก์ชันที่ใช้ค้นหาความยาวของสตริง โดยจะนับจำนวนอักขระทั้งหมดที่แสดงอยู่ในสตริง โดยจะตัดอักขระว่างออกไป จำนวนอักขระทั้งหมดในสตริงประกอบด้วยตัวอักษร อักขระพิเศษ และตัวเลข พร้อมช่องว่าง

ขนาดของ() คืออะไร

sizeof() เป็นฟังก์ชันที่ใช้คำนวณขนาดของตัวดำเนินการ โดยจะส่งคืนขนาดของตัวแปรเฉพาะ ฟังก์ชันนี้สามารถนำไปใช้กับชนิดข้อมูลใดๆ ก็ได้ ซึ่งประกอบด้วยชนิดพื้นฐาน เช่น จำนวนเต็มและ ประเภทพอยน์เตอร์ประเภทจุดลอยตัว โครงสร้าง หรือยูเนียน ผลลัพธ์ของโปรแกรมที่มี sizeof() อาจแตกต่างกันในระบบ 32 บิตและระบบ 64 บิต

ความแตกต่างที่สำคัญ

  • วิธี Strlen ใช้เพื่อค้นหาความยาวของอาร์เรย์ ในขณะที่วิธี sizeof() ใช้เพื่อค้นหาขนาดที่แท้จริงของข้อมูล
  • Strlen() นับจำนวนอักขระในสตริงในขณะที่ sizeof() คืนขนาดของตัวดำเนินการ
  • Strlen() ค้นหาค่าว่างของตัวแปร แต่ sizeof() ไม่สนใจค่าตัวแปร
  • ค่าส่งคืนใน strlen() เป็น int แบบยาว ในทางกลับกัน ค่าส่งคืนใน sizeof() คือ int ที่ไม่ได้ลงนาม

ไวยากรณ์ของ strlen()

strcount = strlen(my_string); 

ที่นี่ my_string เป็นตัวแปรอาร์เรย์อักขระ

ตัวอย่างของ strlen()

ในโปรแกรม C ด้านล่าง เราได้ประกาศตัวแปรสตริงประเภทถ่านแล้ว ตัวแปร Strng ถูกส่งผ่านเป็นอาร์กิวเมนต์ของฟังก์ชัน strlen() เพื่อค้นหาความยาวของ เชือก.

#include<stdio.h> 
#include<string.h> 
int main() 
{ 
    char strng[] = "January"; 
    printf("Length of given string is: %lu\n", strlen(strng));   
}

Output:

Length of given string is: 7

ไวยากรณ์ของ sizeof()

ไวยากรณ์ 1)

ขนาด (ประเภท): 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= ชื่อของตัวแปรที่คุณต้องการกำหนดขนาด

ในโปรแกรม C ด้านล่าง เรากำลังพิมพ์ประเภทข้อมูลถ่านขนาด คำสั่ง Printf มีฟังก์ชัน sizeof พร้อมอักขระอาร์กิวเมนต์

ตัวอย่าง sizeof (ชื่อตัวแปร):

#include<stdio.h>
int main()
{
	printf("sizeof(char) = %d\n\n", sizeof(char));
		
	return 0;
}

Output:

sizeof(char) = 1

ไวยากรณ์ 3)

ขนาดของ (การแสดงออก): Expression= 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;
}

Output:

Size of variable p : 1                                                                                                                               
Size of an expression : 8                                                                                                                            
Size of explicitly converted expression : 4  

ความแตกต่างระหว่าง strlen() และขนาดของ ()

นี่คือความแตกต่างที่สำคัญระหว่าง strlen() และ sizeof():

ความแตกต่างระหว่าง strlen() และขนาดของ ()

สเตรเลน() ขนาดของ()
Strlen() เป็นฟังก์ชันที่กำหนดไว้ล่วงหน้า ซึ่งถูกกำหนดไว้ในไฟล์ส่วนหัวที่เรียกว่า string.h Sizeof() คือตัวดำเนินการยูนารีหรือนิพจน์เวลาคอมไพล์ที่คำนวณจำนวนหน่วยความจำที่ถูกครอบครองโดย ตัวแปร.
วิธีการนี้ใช้ในการค้นหาความยาวของอาร์เรย์ของสตริงหรืออักขระ วิธีนี้ใช้เพื่อค้นหาขนาดจริงของข้อมูล (จัดสรร) เป็นไบต์
นับจำนวนอักขระในสตริงโดยกำจัดค่า null คืนค่าขนาดของตัวดำเนินการ ไม่ใช่ความยาวของสตริง (รวมถึงค่า null)
มันจัดสรรหน่วยความจำที่รันไทม์และค้นหาค่าว่างของตัวแปร Sizeof() ไม่สนใจค่าตัวแปร
ฟังก์ชัน Strlen() ใช้ได้กับสตริงอักขระเท่านั้น ฟังก์ชัน Sizeof() ส่งกลับจำนวนหน่วยความจำที่จัดสรรเป็นไบต์
ค่าที่ส่งคืนใน strlen() เป็น int แบบยาว ค่าส่งคืนใน sizeof() ไม่ได้ลงนาม int
strlen() มีไวยากรณ์เพียงรูปแบบเดียวเท่านั้น ซึ่งก็คือ int strlen(const char *str); มีสามรูปแบบคือ sizeof() 1) sizeof(type), 2) sizeof(variable-name) และ 3) sizeof(expression):