Xin chào và chào mừng trở lại. Chúng tôi có một thách thức khác dành cho bạn.
Trong thử thách này, tôi muốn bạn học tất cả về số học con trỏ.
Hãy nhớ rằng, số học con trỏ là một khái niệm thực sự gọn gàng.
Đó là một khái niệm ký hiệu.
Nhưng nó thực sự minh họa cách các mảng
có liên quan đến con trỏ. Bạn có thể duyệt qua một mảng rất dễ
dàng với một cú pháp rất đơn giản giúp giảm bớt dòng mã của bạn và đó là
khái niệm thực sự gọn gàng.
Vì vậy, bạn sẽ tìm hiểu tất cả về số học con trỏ.
Chúng ta cũng sẽ tìm hiểu thêm về công cụ sửa đổi hằng số.
Vì vậy, trong thử thách này, tôi muốn bạn viết một chương trình
kiểm tra sự hiểu biết của bạn về số học con trỏ và công cụ sửa đổi const.
Chúng ta đã học về cả hai khái niệm này trong các bài giảng trước.
Vì vậy, tôi muốn bạn viết một hàm tính độ dài của chuỗi.
Các yêu cầu là hàm phải nhận như một con trỏ char hằng tham số.
Một con trỏ char không đổi có nghĩa là bạn không thể thay đổi giá trị của những
gì con trỏ đang trỏ đến và bạn
sẽ không làm điều đó với độ dài.
Hàm chỉ có thể xác định độ dài của chuỗi bằng số học con trỏ.
Tôi không muốn bạn sử dụng hàm chiều dài str. Tôi muốn bạn sử dụng số học con trỏ.
Và cách mà tôi hình dung chức năng này sẽ được triển
khai là bạn sẽ nhận được địa chỉ của phần cuối của con trỏ.
Đó sẽ là chiều dài của con trỏ về cơ bản.
Nhưng cách mà bạn có thể lấy địa chỉ của chuỗi cuối cùng và con trỏ là bạn có thể
viết một vòng lặp while.
Vòng lặp while có thể đi đến ký tự dấu chấm dứt rỗng.
Hoặc ký tự kết thúc null, hãy nhớ rằng, được
biểu diễn dưới dạng int.
Vì vậy, dấu chấm hết null thực sự là một con số không. Vì vậy, bạn có thể viết một
vòng lặp while và tất cả vòng lặp while phải bao gồm trong điều
kiện của nó là tham chiếu đến con trỏ.
Bởi vì nếu giá trị của con trỏ tham chiếu d bằng 0, hãy nhảy ra khỏi vòng
lặp và đó sẽ là dấu chấm hết rỗng.
Vì vậy, tôi muốn bạn xem qua toàn
bộ con trỏ.
Và trong khi bạn đang xem
xét nó, hãy tiếp tục tăng con trỏ đó.
Vì vậy, bây giờ bạn có một con trỏ trỏ đến cuối chuỗi.
Sau đó, để thực sự tính toán độ dài, tất cả những gì
bạn phải làm là trừ hai con trỏ.
Con trỏ được truyền vào đó là phần đầu
của chuỗi và sau đó là
con trỏ mà bạn đã tạo trong hàm trỏ đến phần cuối của chuỗi.
Nếu bạn trừ điểm cuối của con trỏ chuỗi so với điểm
bắt đầu của chuỗi, bạn sẽ có độ dài của chuỗi.
Vì vậy, bạn sẽ thực hiện số học con trỏ bằng
cách tăng lần lượt con trỏ để đến địa chỉ kết thúc và sau đó
bạn sẽ sử dụng số học điểm để trừ từng con trỏ.
Đây thực sự có lẽ là cách hợp lệ nhất để sử dụng
số học điểm cho phép trừ. Bạn thường không thêm hai con trỏ
vì tại sao bạn lại thêm hai địa chỉ.
Bạn có thể trừ hai địa chỉ để có được khoảng cách giữa hai phần tử
trong một mảng, điều đó có
ý nghĩa, nhưng nếu cộng thì không. Vì vậy, chỉ cần nhắc lại, hàm chỉ có
thể xác định độ dài của chuỗi bằng cách sử dụng số học điểm.
Tạo một con trỏ cục bộ trong hàm
của bạn, tăng con trỏ đó mỗi lần để đến cuối cho đến khi
bạn thấy dấu chấm dứt rỗng, một vòng lặp while đơn giản.
Và sau đó khi bạn có địa chỉ kết thúc, bạn đã
có địa chỉ đầu, trừ hai con trỏ đó sẽ cho bạn độ dài.
Bạn nên trả về độ dài đó dưới dạng int từ hàm.
Và sau đó bạn chỉ có thể in ra chiều dài thực của chính nó.
Vì vậy, bài tập này sẽ giúp bạn làm quen với số học điểm
và cũng như cách sử dụng công cụ sửa đổi hằng số vì bạn không muốn thay
đổi giá trị thực tế mà nó trỏ
đến và trừ hai con trỏ cũng như sử dụng một vòng lặp while mà
bạn có thể xem chính giá trị của con trỏ để
xác định ký tự null. Chúc may mắn.
Tôi sẽ cung cấp một giải pháp trong bài giảng tiếp theo. Cảm ơn bạn.