Sự khác nhau giữa mảng và chuỗi?

  • Mảng : được khai báo <kiểu dữ liệu> tên mảng[<kích thước>]. Trong đó, kiểu dữ liệu có thể là kiểu dữ liệu nguyên thủy: int, float, double, long, char,… hoặc struct, class,…
  • Chuỗi là kiểu dữ liệu đặc biệt của mảng. Chuỗi là mảng kí tự (kiểu char) + kí tự NULL (‘\0’) ở phần tử cuối của chuỗi. Kí tự NULL sẽ được trình biên dịch tự động thêm vào trong quá trình biên dịch.

Ví dụ: Khai báo mảng kí tự và chuỗi kí tự.

#include <stdio.h>
#include <string.h>
#include <conio.h>


void main( void )
{
    char s1[] = {'v', 'n', 'c', 'o', 'd', 'i', 'n', 'g'};
    char s2[] = "vncoding";
    int sz1 = sizeof(s1);
    int sz2 = sizeof(s2);
    int len = strlen(s2);
    printf("\nsize of s1 = %d", sz1);
    printf("\nsize of s2 = %d", sz2);
    printf("\nlenth of s2 = %d", len);

    getch();
}

Kết quả:

Sự khác nhau giữa mảng và chuỗi
Sự khác nhau giữa mảng và chuỗi
  • s1 là mảng kí tự gồm các kí tự (v, n, c, o, d, i, n, g)
  • s2 là chuỗi kí tự gồm các kí tự (v, n, c, o, d, i, n, g) và kí tự NULL ẩn (chúng ta ko nhìn thấy) sẽ được trình biên dịch thêm vào trong quá trình biên dịch.
  • Toán tử sizeof lấy kích thước (theo byte) của s1 và s2. s1 chứa 8 hằng kí tự tương ứng với kích thước 8 (byte). s2 chứa 8 hằng kí tự + 1 kí tự NULL tương ứng với kích thước 9 (byte).
  • Hàm strlen() lấy độ dài của chuỗi kí tự (ko tính kí tự NULL). Do vậy, độ dài là 8 (kí tự). Ngôn ngữ C có support nhiều built-in function thao tác và xử lí chuỗi kí tự:

Be the first to comment

Leave a Reply