Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hằng chuỗi (string literals) trong ngôn ngữ C

Đị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";