Định nghĩa
Hằng chuỗi là dãy ký tự kết thúc bằng ký tự null ('\0').
char *str = "hi, hello"; /* hằng chuỗi */
Khởi tạo mảng bằng hằng chuỗi
char a1[] = "xyz"; // a1 là char[4] = {'x','y','z','\0'}
char a2[4] = "xyz"; // giống a1
char a3[3] = "xyz"; // char[3] = {'x','y','z'}, THIẾU '\0'
Hằng chuỗi KHÔNG thể sửa đổi
char *s = "welcome"; s[0] = 'W'; /* hành vi không xác định (undefined behavior) */
Nên dùng const để bảo vệ
const char *s1 = "welcome"; s1[0] = 'W'; /* lỗi biên dịch! */
Các loại hằng chuỗi (C11)
/* hằng chuỗi thường, kiểu char[] */ char *s1 = "abc"; /* UTF-8 string literal, kiểu char[] */ char *s3 = u8"abc"; /* 16-bit wide string literal, kiểu char16_t[] */ char16_t *s4 = u"abc"; /* 32-bit wide string literal, kiểu char32_t[] */ char32_t *s5 = U"abc";