Xin chào, và chào mừng trở lại.
Chúng tôi đang ở trong một phần mới.
Trong phần này, chúng ta sẽ nói về chuỗi ký tự.
Bạn có thể đã nghe tôi nói chuỗi từ khá nhiều trong cả lớp, và
bạn có thể đã được một chút nhầm lẫn.
Một chuỗi thực sự chỉ là một từ.
Đó là một cái gì đó được bao bọc trong dấu ngoặc kép.
Chúng ta sẽ nói về cách chúng ta có thể lưu trữ chuỗi trong mảng ký tự.
Vì vậy, cho đến thời điểm này, chúng tôi khá quen thuộc với một ký tự
duy nhất, kiểu dữ liệu char hoặc kiểu dữ liệu "chăm sóc", tuy nhiên bạn muốn để phát âm nó. Chúng tôi biết đó là gì nhưng chúng tôi chưa thực
sự học về từ.
Để gán một ký tự cho một biến char, ký tự được
bao trong một cặp dấu ngoặc kép đơn.
Chúng tôi quen thuộc với điều này.
Chúng tôi
đã học tất cả về điều này. Trong ví dụ này, dấu cộng bằng cộng bên trong dấu ngoặc kép.
Điều quan trọng ở đó là các dấu ngoặc kép.
Bạn cũng đã học được rằng ở đó là sự phân biệt
giữa dấu ngoặc kép và dấu ngoặc kép.
Vì vậy, nếu bạn đặt biến dấu cộng và bạn gán nó
một cái gì đó trong dấu ngoặc kép và dấu cộng là loại char, điều đó sẽ không
hoạt động, vì bạn chỉ có thể chỉ định một ký tự cho kiểu dữ liệu char.
Một hằng số chuỗi hoặc chuỗi ký tự là một chuỗi các ký tự hoặc ký hiệu nằm giữa
một cặp dấu ngoặc kép.
Vì vậy, bây giờ dấu ngoặc kép là sẽ đến một vở kịch mới.
Bất cứ điều gì giữa đôi này dấu ngoặc kép được trình biên
dịch hiểu là một chuỗi.
Và thực sự nó có thể ký tự chữ và số, nó có thể là
các ký tự đặc biệt nhưng chúng thường tạo nên những từ mà bạn có thể coi
đó là văn bản.
Bạn có thể có khoảng trắng.
Nhưng bất cứ điều gì đôi dấu ngoặc kép là một chuỗi ký tự.
Mỗi khi bạn đã hiển thị một thông báo bằng cách
sử dụng hàm printf, chúng tôi đã xác định thông báo như một hằng số chuỗi.
Hãy nhớ printf, đối số đầu tiên chúng tôi đặt một số văn bản bên trong đó và chúng tôi
có một số chỉ định định dạng.
Đó là một phụ âm chuỗi.
Bạn cũng nghe thấy chuỗi thuật ngữ theo nghĩa đen, nó giống nhau.
Vì vậy, chúng tôi nói print f đây là một chuỗi mọi thứ ở giữa những
dấu ngoặc kép đó là một hằng số chuỗi và chúng ta có thể đặt nó trên một hoặc hai dòng.
Bạn cũng nhận thấy rằng bạn có thể có các câu lệnh in
có dấu gạch chéo ngược của trình tự thoát n. Hiện nay cái thứ ba này ừm khá tuyệt, tôi sẽ
giải thích trong giây lát.
Nhưng điểm chính là bạn có để hiểu sự khác
biệt giữa dấu nháy đơn và dấu ngoặc kép trích dẫn và những gì bên trong đó.
Với dấu ngoặc kép, bạn có dây.
Với các dấu ngoặc kép, bạn có các ký tự.
Có hai loại hằng số.
Đối với ví dụ thứ ba này, printf này trong đó chúng ta có bốn và sau đó chúng ta có
một dấu gạch chéo ngược sau đó là một dấu ngoặc kép.
Nếu bạn muốn thực sự hiển thị một báo giá duy nhất
dưới dạng đầu ra, bạn phải thoát khỏi nó.
Và bạn có thể thoát khỏi đặc biệt ký tự bằng cách sử dụng dấu gạch chéo ngược.
Vì vậy, trong ví dụ thứ ba, nó thực sự sẽ
in ra bốn câu trích dẫn kép mà bạn viết, và sau đó là một dấu ngoặc kép khác.
Vì vậy, trình biên dịch diễn giải một dấu ngoặc kép không có dấu gạch chéo ngược đứng
trước làm dấu phân cách chuỗi.
Mỗi khi bạn sử dụng một đôi trích dẫn nó bắt đầu và kết thúc một chuỗi nhưng điều
gì xảy ra nếu bạn muốn hiển thị nó thì bạn chỉ cần đặt dấu
gạch chéo ngược phía trước nó.
Và nó sẽ cho trình biên dịch biết điều này không thực sự kết thúc chuỗi.
Đó là thứ mà chúng tôi muốn để hiển thị hoặc thứ gì đó
mà chúng tôi muốn sử dụng làm ký tự đó.
Ngoài ra bạn phải sử dụng lối thoát trình tự nếu bạn muốn
thực hiện cả dấu gạch chéo ngược vì dấu gạch chéo ngược là một chuỗi thoát.
Vì vậy, khi bạn nhìn thấy dấu gạch chéo ngược dấu gạch chéo ngược, bạn thực sự đang hiển
thị dấu gạch chéo ngược đó trong một hàm printf.
Nếu bạn thấy nó ở bất kỳ nơi nào khác, bạn đang gán dấu gạch chéo ngược
cho một biến hoặc cách nó được sử dụng.
Nhưng một dấu gạch chéo ngược chính nó đã theo sau bởi một dấu gạch chéo ngược khác sẽ thoát
khỏi chuỗi dấu gạch chéo ngược.
Và một lần nữa, một dấu gạch chéo ngược và một chuỗi luôn báo hiệu
sự bắt đầu của một chuỗi thoát.
Vì vậy, một bản thân nó là sẽ không hiển thị.
Đây là những ký tự đặc biệt.
Vì vậy, khi bạn ở trong dấu ngoặc kép, bạn có thể thấy dấu gạch chéo ngược để
thoát các ký tự đặc biệt và ngay cả chính dấu gạch chéo ngược.
Đây là cách chuỗi trong bộ nhớ.
Một chuỗi trong bộ nhớ là mỗi ký tự đơn được biểu
diễn bằng một bit ở đây.
Và vì vậy nếu bạn có một chuỗi được gọi đây là một chuỗi, bạn sẽ thấy nó ở nơi
không gian có một cái gì đó trong bộ nhớ.
Và bạn cũng nên nhận thấy tại phần cuối có dấu gạch chéo ngược số 0 đó là
dấu chấm hết rỗng mà chúng ta sẽ nói về.
Nhưng đối với chuỗi thứ hai, một lần nữa, bạn thấy mọi thứ trong bộ nhớ.
Ngay cả dấu gạch chéo ngược n mà đại diện cho một dòng mới trong bộ nhớ.
Và sau đó đối với bạn đúng, bạn sẽ thông báo báo giá là trong bộ nhớ.
Nhưng dấu gạch chéo ngược thì không.
Bởi vì dấu gạch chéo ngược đang phân định trích dẫn.
Nó thoát khỏi câu trích dẫn.
Vì vậy, đây là cách nó trông trong bộ nhớ.
Bạn nên nhận thấy rằng chuỗi trong bộ nhớ luôn có ít nhất một byte
nữa cho dấu gạch chéo ngược đó không, là ký tự rỗng.
Cũng giống như sơ đồ trên dưới là không chính xác.
Bạn sẽ nhận thấy "bạn" không được hiển thị ở đây vì vậy sau khi báo giá gấp đôi trích dẫn, bạn
không thấy bạn ở đó. Bạn nên trở thành ở một nơi nào đó
và nó giống như áp dụng nó ở đó ở một nơi nào đó mà họ thực sự ở đó
chỉ hiển thị nó đây là các giá trị ASCII bên dưới và vì vậy nó chỉ hiển thị-không hiển thị nó, nhưng
bạn sẽ đúng trước bên phải.
Và đó là điều tôi muốn nói về là ký tự rỗng này.
Đó là một nhân vật đặc biệt với giá trị mã bằng không.
Nó được thêm vào cuối mỗi chuỗi để trình biên dịch biết nơi
nó kết thúc và cả khi bạn chạy nó.
Nhân vật này được gọi là ký tự null và bạn không chỉ
đặt một số 0 trong đó bạn có thể đặt một dấu gạch chéo ngược số 0.
Và đó là những gì trong này slide trước ở cuối.
Và nó có thể ở bất cứ đâu thực sự trong bộ nhớ.
Và tùy thuộc vào nơi nó ở bộ nhớ, một hàm sẽ hoạt động và tìm kiếm cho
đến khi nó thấy rằng dấu gạch chéo ngược số 0 và nó có thể hiển thị nó hoặc có thể thao
túng nó nếu bạn sử dụng các hàm chuỗi khác nhau.
Nó rất quan trọng ký tự null đó.
Một chuỗi luôn được kết thúc bởi một ký tự null.
Vì vậy, độ dài của một chuỗi là luôn lớn hơn một số
ký tự trong chuỗi.
Điều này sẽ trở nên rất quan trọng khi chúng ta sử dụng mảng
ký tự và chúng ta chỉ định kích thước của mảng kích thước mảng sẽ luôn
phải bằng một kích thước nhiều ký tự bạn muốn lưu trữ
vì ký tự null này.
Chúng tôi cũng có một khái niệm về null mà chúng ta chưa thực sự
nói về quá nhiều chi tiết.
Nó thường phát huy tác dụng khi chúng
ta nói về con trỏ, nhưng đừng nhầm lẫn với null ký tự với từ khóa null.
Vì vậy, có một từ khóa rỗng ở một trong số các tiêu đề bao gồm mà bạn có thể sử dụng.
Và đây là một biểu tượng đại diện cho một địa chỉ bộ nhớ
không tham chiếu bất cứ thứ gì.
Vì vậy, bạn sử dụng nó khi bạn khi bạn sử dụng con trỏ.
Một ký tự rỗng chỉ là một trình kết thúc chuỗi.
Chúng ta sẽ nói nhiều hơn về null khi chúng ta nói về các con trỏ nhưng hãy
đảm bảo rằng bạn hiểu sự khác biệt giữa ký tự null và từ khóa null.
Bạn có thể thêm một ký tự 0 dấu gạch chéo ngược ở cuối một chuỗi một
cách rõ ràng và điều này sẽ tạo ra hai chuỗi và Tôi sẽ chỉ cho bạn cách thực hiện điều này khi
chúng ta nói về việc xác định mảng ký tự.
Đây là một ví dụ với dấu chấm hết null.
Chúng tôi có một bản in f ở đây, và chúng tôi nói ký tự và sau đó là
dấu gạch chéo ngược số 0 kết thúc một chuỗi.
Vì vậy, những gì sẽ xảy ra là nếu bạn biên
dịch và chạy chương trình này, đầu ra mà
bạn sẽ nhận được là dòng đầu tiên sẽ là ký tự và sau đó là dấu gạch chéo ngược o sẽ có một nó sẽ kết thúc
nó và chỉ là phần đầu tiên của chuỗi sẽ được hiển thị.
Sẽ không còn nữa đầu ra vì print nghĩ rằng nó là
phần cuối của chuỗi.
Vì vậy, nó chỉ in ra ký tự.
Đầu ra sẽ kết thúc sau hai từ đầu tiên đó vì
hàm ngừng xuất một lần nó đạt đến ký tự null.
Vì vậy, dấu gạch chéo ngược thứ hai bằng 0 tại cuối chuỗi, vì vậy mặc dù bạn
không thấy dấu gạch chéo ngược 0 ở đây ngay trước dấu ngoặc kép kết
thúc, ngay sau dấu chấm chuỗi, vẫn còn một cái ở đó, nhưng bạn không bao giờ
nó không bao giờ đạt được.
Vì vậy, có một dấu chấm hết rỗng tiềm ẩn ở cuối chuỗi và printf để nó
biết kết thúc ở đâu.
Và nếu bạn thêm một cái khác, nó chỉ sẽ hiển thị đến cái đầu tiên đó.
Vì vậy, dấu chấm hết null đầu tiên đó là được tìm thấy trong chuỗi ký tự
luôn luôn đánh dấu sự kết thúc của chuỗi.
Vì vậy, hãy hiểu những ký tự null này.
Đây chỉ là một cái nhìn tổng quan nhanh chóng để
mô tả chuỗi là gì và hiểu rằng chuỗi nằm trong dấu ngoặc kép.
Và tôi cũng muốn mô tả ký tự null.
Trong bài giảng tiếp theo, chúng ta sẽ hiểu các chuỗi ký
tự là gì về cách bạn có thể tạo những khác biệt này một
loại biến để lưu trữ các chuỗi.
Cảm ơn bạn.