Sự khác biệt giữa strlen () và sizeof () cho chuỗi trong C

Mục lục:

Anonim

Strlen () là gì

strlen () là một hàm để tìm độ dài của một chuỗi. Nó đếm tổng số ký tự được trình bày trong một chuỗi, loại bỏ ký tự rỗng. Tổng số ký tự trong chuỗi bao gồm, bảng chữ cái, ký tự đặc biệt và số, với khoảng trắng.

Trong sự khác biệt này giữa strlen () và sizeof () cho chuỗi trong hướng dẫn C, bạn sẽ học:

  • Strlen () là gì
  • Sizeof () là gì
  • Cú pháp của strlen ()
  • Cú pháp của sizeof ()
  • Sự khác biệt giữa strlen () và sizeof ()

Sizeof () là gì

Sizeof () là một hàm được sử dụng để tính toán kích thước của 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, chứa các kiểu nguyên thủy như kiểu số nguyên và con trỏ, kiểu dấu phẩy động, cấu trúc hoặc liên 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 một 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ị của biến.
  • Giá trị trả về trong strlen () là int dài, mặt khác giá trị trả về trong sizeof () là int không dấu.

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 là một đối số của hàm strlen () để tìm độ dài của chuỗi.

#include#includeint 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)

sizeof (type): Type = loại được tham chiếu

Ví dụ về sizeof (type):

Trong đoạn mã dưới đây, & type cung cấp địa chỉ của biến (double x). Nó được tăng dần với 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.

Đánh máy x thành char * và lấy sự khác biệt sẽ cho phép bạn biết tổng số biến của kiểu char được lưu trữ trong bộ nhớ. Chúng tôi đã sử dụng getchar () để đọc ký tự.

#include#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): Tên-biến = tên của biến mà bạn muốn xác định kích thước.

Trong chương trình C dưới đây, chúng tôi đang in kiểu dữ liệu kích thước char. Câu lệnh printf chứa hàm sizeof với đối số char.

Ví dụ về sizeof (tên-biến):

#includeint 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, đầu tiên chúng ta sẽ tính toán và in ra kích thước của biến. Sau đó, chúng tôi sẽ đánh giá biểu thức, lưu trữ nó trong biến a và hiển thị kết quả trong câu lệnh printf.

#includeint 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 : 1Size of an expression : 8Size 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 () Sizeof ()
Strlen () là một hàm được xác định trước, được định nghĩa trong một tệp tiêu đề được gọi là string.h. Sizeof () là một toán tử đơn 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 của dữ liệu (được cấp phát) theo byte.
Nó đếm số ký tự trong một chuỗi loại bỏ các giá trị rỗng. Nó trả về kích thước của một toán hạng, không phải độ dài chuỗi (bao gồm cả giá trị null).
Nó cấp phát bộ nhớ trong thời gian chạy và tìm kiế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 các chuỗi ký tự Hàm sizeof () trả về lượng bộ nhớ được cấp phát theo byte.
Giá trị trả về trong strlen () là long int. Giá trị trả về trong sizeof () là int không dấu.
Chỉ có một cú pháp của strlen () là int strlen (const char * str); Có ba cú pháp là sizeof () 1) sizeof (kiểu), 2) sizeof (tên-biến) và 3) sizeof (biểu thức):