ความแตกต่างระหว่าง 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() เป็นฟังก์ชันที่กำหนดไว้ล่วงหน้า ซึ่งถูกกำหนดไว้ในไฟล์ส่วนหัวที่เรียกว่า 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): |