Sự khác biệt giữa strlen() và sizeof() cho chuỗi trong C
strlen() là gì
strlen() là hàm tìm độ dài của chuỗi. Nó đếm tổng số ký tự được trình bày trong một chuỗi, loại bỏ ký tự null. Tổng số ký tự trong chuỗi bao gồm bảng chữ cái, ký tự đặc biệt và số, có khoảng trắng.
sizeof() là gì
sizeof() là một hàm được sử dụng để tính toán kích thước toán hạng của nó. Nó trả về kích thước của biến cụ thể. Hàm này có thể được áp dụng cho bất kỳ kiểu dữ liệu nào, bao gồm các kiểu nguyên thủy như số nguyên và các loại con trỏ, kiểu dấu phẩy động, cấu trúc hoặc kết hợp. Đầu ra của chương trình chứa sizeof() có thể khác nhau trên hệ thống 32 bit và hệ thống 64 bit.
SỰ KHÁC BIỆT CHÍNH
- Phương thức Strlen được sử dụng để tìm độ dài của một mảng trong khi phương thức sizeof() được sử dụng để tìm kích thước thực của dữ liệu.
- Strlen() đếm số ký tự trong một chuỗi trong khi sizeof() trả về kích thước của toán hạng.
- Strlen() tìm kiếm giá trị null của biến nhưng sizeof() không quan tâm đến giá trị biến.
- Giá trị trả về trong strlen() là long int, mặt khác giá trị trả về trong sizeof() là unsigned int.
Cú pháp của strlen()
strcount = strlen(my_string);
Ở đây my_string là một biến mảng ký tự.
Ví dụ về strlen()
Trong chương trình C dưới đây, chúng ta đã khai báo biến chuỗi kiểu char. Biến Strng được truyền dưới dạng đối số của hàm strlen() để tìm độ dài của chuỗi.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Đầu ra:
Length of given string is: 7
Cú pháp của sizeof()
Cú pháp 1)
kích thước(loại): Loại= loại được tham chiếu
Ví dụ về sizeof(loại):
Trong đoạn mã bên dưới, &type cung cấp địa chỉ của biến (double x). Nó được tăng thêm 1, cung cấp địa chỉ nơi bạn có thể lưu trữ biến tiếp theo của kiểu x.
Việc nhập x vào char* và lấy chênh lệch sẽ cho phép bạn biết tổng số biến thuộc loại char được lưu trong bộ nhớ. Chúng ta đã sử dụng getchar() để đọc ký tự.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
đầu ra:
8
Cú pháp 2)
sizeof(tên biến): Variable-name=tên biến bạn muốn xác định kích thước.
Trong chương trình C bên dưới, chúng ta đang in kiểu dữ liệu size char. Câu lệnh Printf chứa hàm sizeof với đối số char.
Ví dụ về sizeof(tên biến):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Đầu ra:
sizeof(char) = 1
Cú pháp 3)
sizeof(biểu thức): Biểu thức= Biểu thức bạn phải đánh giá.
Ví dụ về sizeof(biểu thức):
Trong chương trình dưới đây, trước tiên chúng ta tính toán và in kích thước của biến. Sau đó, chúng ta đánh giá biểu thức, lưu nó vào biến a và hiển thị kết quả trong câu lệnh 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; }
Đầu ra:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Sự khác biệt giữa strlen() và sizeof()
Dưới đây là những khác biệt quan trọng giữa strlen() và sizeof():
Strlen() | Kích thước() |
---|---|
Strlen() là một hàm được xác định trước, được xác định trong tệp tiêu đề có tên là string.h. | Sizeof() là toán tử một ngôi hoặc biểu thức thời gian biên dịch để tính toán lượng bộ nhớ bị chiếm bởi một biến. |
Phương thức này được sử dụng để tìm độ dài của một mảng chuỗi hoặc ký tự. | Phương pháp này được sử dụng để tìm kích thước thực tế của dữ liệu (được phân bổ) tính bằng byte. |
Nó đếm số ký tự trong một chuỗi loại bỏ các giá trị null. | Nó trả về kích thước của toán hạng, không phải độ dài chuỗi (bao gồm các giá trị null). |
Nó phân bổ bộ nhớ trong thời gian chạy và tìm giá trị null của biến. | Sizeof() không quan tâm đến giá trị biến. |
Hàm Strlen() chỉ hoạt động với chuỗi ký tự | Hàm Sizeof() trả về lượng bộ nhớ được phân bổ theo byte. |
Giá trị trả về trong strlen() là long int. | Giá trị trả về trong sizeof() là unsigned int. |
Chỉ có một cú pháp duy nhất của strlen() đó là int strlen(const char *str); | Có ba cú pháp của sizeof() 1) sizeof(type), 2) sizeof(tên biến) và 3) sizeof(biểu thức): |