Xin chào, và chào mừng trở lại.
Bởi vì số học điểm là một khái niệm khó hiểu và khó nắm bắt,
tôi muốn xem qua một ví dụ cuối
cùng thực sự chứng minh cho khái niệm này, nó hoạt động rất tốt.
Và nếu bạn hiểu ví dụ này, bạn sẽ không
gặp vấn đề gì với số học điểm.
Vì vậy, ví dụ đầu tiên mà tôi muốn cho bạn thấy là tác
dụng của việc thêm một giá trị số nguyên vào một con trỏ.
Vì vậy, khi chúng ta thực hiện số học con trỏ với phép cộng, chúng
ta có thể thực sự thấy nó hoạt động như thế nào về mặt địa chỉ.
Vì vậy, ở đây trong chương trình này, tất cả những gì tôi đang làm là tạo
một chuỗi, một mảng ký tự, nó được gọi là một chuỗi.
Và sau đó tôi đang tạo một con trỏ ký tự có tên là p.
Tôi sẽ xem xét toàn bộ chiều dài của chuỗi là
bội số. Vì vậy, tôi sẽ đi qua toàn bộ mảng.
Chỉ cần đặt tên cơ bản cho độ dài độ mạnh vòng lặp có nhiều kích thước và nhiều.
Và sau đó tôi đang in ra
từng chuỗi hoặc ký tự thực bên trong mảng đó.
Và những gì tôi đang làm là tôi đang hiển thị
địa chỉ và sau
đó là địa chỉ với số thực mà tôi đã thêm vào nó.
Vì vậy, chúng ta hãy chỉ xem xét đầu ra của điều này vì đầu
ra thể hiện một ví dụ thực sự tốt về số học điểm.
Vì vậy, chúng ta hãy đi đến các khối mã và chạy nó.
Vì vậy, ở đây chúng ta đang ở trong các khối mã. Tôi đã làm sạch mã một chút.
Tôi sử dụng chiều dài str, đặt độ dài strn vì nó bao gồm thêm.
Và tôi chỉ muốn chạy cái này.
Vì vậy, khi tôi chạy nó, điều bạn sẽ nhận thấy là, nó hiển thị cho
bạn cách nhớ bộ nhớ trông như thế nào và nó hiển thị cho bạn các giá
trị thực hiện phép tính điểm. Vì vậy, nếu bạn nói nhiều con
0, hãy nhớ rằng, nhiều con chỉ chứa một chuỗi.
Nhưng nếu chúng ta nhìn vào điều này và chúng ta nói rằng hãy
nhìn vào nội dung mảng, bội số của 0 là a, bội số của 1 là khoảng trắng và phần còn lại là chuỗi.
Đó là mảng.
Ngay bên cạnh điều này cũng giống như việc thêm 0 vào con trỏ
và tham chiếu đến nó, thêm 1 và thêm 2.
Và nó chỉ cho bạn cách bạn có thể thực hiện số học con trỏ bằng cách
tham chiếu đến chính con trỏ và thêm các số vào nó.
Vì vậy, con trỏ cộng với bảy tham chiếu mà bạn nhận được g.
Sau đó, trong cột thứ ba, tôi sẽ hiển thị cho bạn các
địa chỉ thực khi chúng tôi tăng dần. Vì vậy, địa chỉ của mỗi
phần tử trong mảng bằng cách sử dụng ký hiệu và ngay
trên mảng ký tự, chúng ta thấy địa chỉ 060feff cho phần tử 0, v.v.
Và sau đó chúng tôi xem xét các địa chỉ nếu chúng tôi
chỉ thêm vào chính con trỏ mà không tham chiếu đến nó, và bạn
sẽ thấy các địa chỉ xếp thành hàng.
Và vì vậy, sau đó chúng ta có thể xem cú pháp để xem điều gì đang xảy ra ở
đây về điều đầu tiên mà chúng ta thực sự hiển thị là chỉ mục trong mảng chỉ là một bộ đếm.
Và sau đó chúng tôi hiển thị một phần trăm c
là ký tự trong mảng.
Điều tiếp theo mà chúng tôi đang hiển thị là
tham chiếu đến con trỏ cộng với I.
Vì vậy, ở đây những gì chúng tôi đang làm là chúng tôi hiển thị I
và sau đó chúng tôi hiển thị tham chiếu của con trỏ cộng với I,
giá trị thực tế.
Vì vậy, chúng
tôi hiển thị như
d chỉ là bộ đếm thực tế và sau đó điểm c là
hội nghị của chúng tôi. Vì vậy, p là con trỏ của chúng tôi.
Chúng tôi chỉ nói p cộng với I, số học con trỏ, và sau đó chúng
tôi đang tham khảo nó.
Và sau đó để lấy địa chỉ, tất
cả những gì chúng ta cần làm để lấy địa chỉ mảng là
nói dấu và nhiều và sau đó là chỉ mục.
Để có được địa chỉ đầu tiên của con trỏ ở đây chúng ta chỉ cần nói
p cộng với
I để có được bộ đếm thực tế đang
hiển thị cho bạn cách chúng ta tăng số p đó, chúng
ta chỉ cần thực hiện p cộng với phần trăm d.
Nhưng nó thực hiện rất tốt việc chứng
minh các cách khác nhau mà bộ nhớ mà chúng ta đang trỏ
đến các địa chỉ được thực
sự hiển thị và cách chúng tương đương với
các chỉ mục khác nhau trong một mảng và các con trỏ thực tế.
Tôi nghĩ điều này đã làm một công việc tốt.
Tôi muốn xem xét thêm một ví dụ khác thực hiện một công việc tốt
khác liên quan đến số học con trỏ với độ dài. Bởi vì đây là
những số nguyên. Vì vậy, tất cả những gì chúng ta phải
làm là thêm một và tự động chuyển lên byte tiếp theo, v.v. Hãy nhìn vào những gì chúng tôi làm, chúng tôi mong muốn.
Vì vậy, trong ví dụ này, tôi cũng muốn chứng minh cách bạn có thể làm điều
tương tự với một con trỏ dài và dài.
Với con trỏ ký tự, nó chỉ là một mảng ký tự chuỗi.
Nhưng ngay cả đối với các mảng dài, có kích thước khác nhau,
chúng ta vẫn có thể lặp lại chúng bằng con trỏ và
bạn có thể thấy số byte thực sự thay đổi như thế nào.
Vì vậy, mặc dù chúng ta nói rằng chúng ta có một con trỏ dài và chúng ta thêm một con trỏ vào nó, nhưng thực tế chúng
ta đang thêm 4 byte vào nó vì con trỏ dài hơn một chút và chúng ta sẽ thấy điều đó trong ví dụ này.
Vì vậy, bây giờ chúng ta hãy chạy ví dụ này trong các khối mã.
Vì vậy, đây là ví dụ của chúng tôi. Một lần nữa, chúng ta có một bộ đếm số nguyên, một bộ đếm vòng lặp.
Chúng tôi có một mảng dài 15l.
Chúng tôi chỉ định l bằng cách đặt hậu tố vào sau đó chúng tôi chỉ định
l của họ, long của họ, chúng tôi có một con trỏ dài trỏ đến bội số.
Một lần nữa, vì nó là một mảng nên chúng ta không cần phải sử dụng địa chỉ của toán tử.
Chúng ta sẽ trải qua toàn bộ thời gian dài. Ở đây chúng ta không thể sử dụng chiều dài khuấy mà
chúng ta phải sử dụng kích thước, và chúng ta thực sự phải chia nó cho từng vị trí trong mảng.
Vì vậy, tổng kích thước chia cho một điểm duy nhất trong mảng, đó là
khi chúng ta muốn nhảy ra ngoài vì chúng
ghi nhớ các địa chỉ của chúng ta đang tăng 4 byte mỗi vị trí.
Và một lần nữa những gì chúng tôi đang làm ở đây là chúng tôi chỉ
hiển thị cả con trỏ so với mảng và cho bạn thấy chúng có
liên quan như thế nào và sau đó chúng tôi đang hiển thị
tổng số byte thực tế dài có trên hệ thống của chúng tôi.
Và vì vậy điều này một lần nữa chỉ chứng minh cách các mảng
có liên quan đến con trỏ.
Vì vậy, nếu chúng ta chạy
điều này, chúng ta sẽ thấy kết quả tương tự. Nhưng có một chút khác biệt ở
đây là kích thước địa chỉ, tăng 4 byte. Vì vậy, chúng tôi sẽ in ra địa chỉ và con trỏ.
Vì vậy, đối với địa chỉ và con
trỏ cộng với 0, nó sẽ
bằng với mảng con 0 là địa chỉ 6356728.
Và để bỏ tham chiếu con trỏ, chúng ta sẽ nhận được giá trị là 15.
Vì vậy, p cộng với 0 vẫn sẽ bằng với mảng con 0.
Và sau đó, chúng ta làm tương tự với p cộng với một p cộng 2 và
p cộng 3, tất cả đều tương đương với các vị trí chính xác trong mảng cho chỉ số.
Các địa chỉ tăng lên 4 byte, nhưng chúng ta vẫn có thể thêm một 2 và 3 và chúng
tôi thấy rằng các giá trị đều giống nhau.
Và sau đó nó cho chúng ta biết đoạn dài này chiếm 4 byte và đó là lý do tại sao các địa chỉ tăng lên 4.
Điều quan trọng ở đây là chúng ta vẫn có thể thêm một địa chỉ
vào nó và trình biên dịch biết để chuyển đến địa chỉ tiếp theo.
Vì vậy, cho dù chúng ta có một dài hay một ký tự hoặc
bất kỳ kiểu dữ liệu cụ thể nào đó nằm bên trong hệ
thống, việc thêm một hoặc 2 sẽ thêm đúng số byte.
Vì vậy, chỉ là một ví dụ thú vị khác mà
tôi muốn cho bạn thấy bởi vì số học con trỏ này thực sự quan
trọng và nó thực sự hữu ích khi
lặp lại hoặc duyệt qua một mảng, nó làm cho sạch hơn và hiệu quả hơn nhiều.
Vì vậy, tôi hy vọng điều này sẽ giúp. Cảm ơn bạn.