Xin chào, và chào mừng trở lại. Trong bài giảng này tôi muốn nói về số học điểm.
Bây giờ chúng ta đã hiểu mối quan hệ giữa mảng
và con trỏ, khái niệm này sẽ dễ hiểu hơn.
Chúng tôi nói là số học, nhưng chúng tôi không thực sự
- tất cả những gì nó thực sự có nghĩa là
bạn có thể thực hiện cộng hoặc trừ hoặc tăng hoặc giảm trên chính một con trỏ.
Vì vậy, sức mạnh thực sự của việc sử dụng con trỏ đến mảng phát huy tác dụng khi bạn
muốn xâu chuỗi các phần tử của một mảng.
Bạn muốn đi từ phần tử đầu tiên đến phần cuối, bạn muốn lặp lại chúng.
Đây là con trỏ sức mạnh thực sự. Bởi vì con trỏ trỏ sử
dụng địa chỉ, mỗi phần tử trong mảng chỉ là một địa chỉ khác.
Vì vậy, bạn chỉ có thể làm dấu cộng trên con trỏ và bạn có thể đi đến địa chỉ tiếp theo.
Vì vậy, ở đây con trỏ giá trị có thể được sử dụng để truy cập số nguyên
đầu tiên của mảng giá trị.
Nó có thể được sử dụng để truy cập các giá trị con 0.
Vì vậy, nếu bạn nhớ các giá trị, con trỏ là một con trỏ
trỏ đến một mảng số nguyên.
Và chúng tôi đã gán nó cho phần tử đầu tiên trong mảng bằng cách chỉ định con trỏ cho tên mảng.
Chúng tôi cũng có thể sử dụng địa chỉ của toán tử con 0 nếu chúng tôi muốn.
Nhưng khi chúng ta bỏ qua con trỏ giá trị
tham chiếu vì nó đang trỏ đến phần tử đầu tiên trong
mảng, nó sẽ cung cấp cho bạn số nguyên đầu tiên trong mảng giá trị con 0.
Nếu bạn muốn tham chiếu đến giá trị phụ 3
thông qua biến con trỏ, tất cả những gì bạn phải làm là thêm 3 vào con trỏ giá trị và sau
đó áp dụng toán tử chuyển hướng để tham chiếu đến nó.
Vì vậy, bạn chỉ có thể làm một cái gì đó như thế này. Bạn có thể nói con trỏ giá trị cộng với 3 và
sau đó bỏ qua nó bằng dấu hoa thị.
Và bạn thường đặt dấu hoa thị bên ngoài dấu ngoặc kép để làm cho nó rõ ràng.
Nhưng điều này đang làm là nó đang nói con trỏ
giá trị, là một địa chỉ của phần tử đầu tiên trong mảng, nó đang thêm 3 vào nó.
Và vì vậy nó sẽ thực sự cộng từng byte cho số nguyên, nó
sẽ nhân số byte nhân với số nguyên.
Nhưng về cơ bản, điều này sẽ trỏ đến phần tử
phụ 3, phần tử thứ 4 trong mảng.
Vì vậy, trong biểu thức, con trỏ giá trị dấu hoa thị cộng với i có
thể được sử dụng để truy cập bất kỳ giá trị nào có trong một mảng giá trị.
Vì vậy, nếu bạn hiểu biểu thức này, bạn có thể thêm bất kỳ thứ gì vào i và
nó sẽ trỏ bạn đến một mảng phần tử cụ thể.
Vì vậy, nếu bạn muốn đặt giá trị phụ 10 thành 27, tất cả những
gì bạn phải làm là nếu bạn đang sử dụng con
trỏ là nói giá trị con trỏ cộng với 10 và sau đó tham khảo nó và nói bằng 27.
Vì vậy, bạn xem các cú pháp khác nhau ở đây.
Một lần nữa, đó là sự tiện lợi về mặt lý thuyết nhưng nó cũng hiệu quả hơn về bản thân chương trình.
Vì vậy, con trỏ vì chúng liên quan chặt chẽ đến mảng, bạn có
thể dễ dàng truy cập các phần tử bằng cách tăng dần con trỏ giảm
dần hoặc thêm giá trị hoặc trừ giá trị khỏi một con trỏ.
Rất, rất hữu ích.
Để đặt con trỏ giá trị trỏ đến phần tử thứ hai của mảng giá trị, bạn
có thể áp dụng toán tử địa chỉ cho giá trị phụ 1 và gán kết quả cho con trỏ giá trị.
Chúng tôi đã thấy điều này. Đây chỉ là một cách khác để thực hiện điều tương tự mà tôi
đã đề cập trước đó nếu bạn muốn sử dụng toán tử phụ địa chỉ.
Bạn luôn có thể làm điều này nếu
bạn muốn, nhưng sẽ thuận tiện hơn nhiều khi thực hiện số học con trỏ.
Nếu con trỏ giá trị trỏ đến giá trị phụ 0, bạn có
thể đặt tại điểm giá trị của một giá trị bằng cách chỉ cần thêm một giá trị
vào giá trị của con trỏ giá trị. Và đây thực sự là những gì chúng ta đang gặp phải với số học.
Tất cả những gì bạn phải làm là nói giá trị điểm hoặc
cộng bằng một và bây giờ con trỏ giá trị đang trỏ đến phần tử thứ hai trong mảng
hoặc chỉ mục đầu tiên.
Ký hiệu rất, rất đẹp, rất dễ làm.
Vì vậy, đây là biểu thức hoàn toàn hợp lệ trong c và có thể
được sử dụng cho con trỏ đến bất kỳ kiểu dữ liệu nào cho dù đó là ký
tự số nguyên hay bất kỳ thứ gì. Và bạn có lẽ nên nghĩ về việc điều này có thể hữu ích như thế nào trong các ký tự.
Nếu bạn có một con trỏ ký tự, bây giờ bạn có thể truy cập
từng phần tử, từng ký tự trong một chuỗi chỉ bằng cách thực hiện phép cộng trên một con trỏ.
Các toán tử tăng và giảm cộng với cộng và trừ trừ đặc
biệt hữu ích khi xử lý các con trỏ này
vì bạn thường sẽ muốn đi từ phần tử này sang phần tử tiếp theo, v.v.
Việc thêm 22 hoặc trừ 20 không phổ biến vì
bạn thường đi theo trình tự.
Vì vậy, việc sử dụng toán tử tăng trong một con trỏ có tác dụng giống như thêm một toán tử vào con trỏ.
Sử dụng toán tử giảm dần có tác dụng tương tự như trừ một toán tử khỏi con trỏ.
Vì vậy, nói rằng con trỏ cộng với các giá
trị cộng sẽ đặt con trỏ giá trị trỏ đến số nguyên tiếp theo trong mảng giá trị.
Trừ trừ nên là con trỏ giá trị Sẽ thiết
lập con trỏ giá trị trỏ đến số nguyên trước đó trong mảng giá trị.
Nhưng bạn muốn cẩn thận khi thực hiện phép trừ
vì bạn muốn đảm bảo rằng bạn ít nhất trong mảng và bạn không ở mức 0.
Và tương tự đối với điểm cộng cộng.
Nếu bạn đang ở cuối mảng, bạn không muốn có bất kỳ lỗi nào vượt quá giới hạn.
Vì vậy, hãy đảm bảo rằng con trỏ giá trị nếu
bạn đang giảm nó, ban đầu nó không trỏ đến đầu mảng giá trị.
Một ví dụ khác ở đây
chúng ta thực sự sẽ tính tổng tất cả các phần tử
trong mảng, bạn thấy rằng chúng ta có một
hàm tổng mảng và hàm nhận một mảng
và nó cũng nhận một số nguyên không đổi làm tham số.
Bên trong hàm, chúng ta sẽ tạo một số nguyên.
Chúng ta sẽ khởi tạo tổng số nguyên đó thành 0 và chúng ta sẽ tạo một con trỏ
số nguyên, một con trỏ tới kiểu int.
Chúng tôi cũng sẽ tạo một con
trỏ không đổi.
Vì vậy, điều đó có nghĩa là bạn không thể thay đổi địa chỉ của nó.
Nó luôn luôn là mảng cộng với n và nó sẽ được đặt tên là kết thúc mảng.
Chúng tôi đang làm điều này vì nó làm cho vòng lặp của chúng tôi hiệu quả hơn nếu chúng
tôi thiết lập nó để đi đến phần cuối của mảng và chỉ cần nhìn vào con trỏ.
Vì vậy, kết thúc mảng là trỏ đến địa chỉ của cuối mảng.
Chúng ta có thể nói mảng, là những gì được truyền vào và sau đó n
là kích thước,
kích thước của mảng.
Bây giờ, vòng lặp for sẽ khởi tạo con trỏ biến điều khiển vòng lặp, con
trỏ này là một con trỏ tới mảng. Và tất cả những gì bạn phải
làm là nếu bạn muốn gán một con trỏ cho phần tử đầu tiên của một mảng, tất cả những
gì bạn phải làm là nói con trỏ bằng mảng.
Và sau đó điều kiện thoát khỏi vòng lặp của chúng ta là nếu con trỏ nhỏ hơn phần cuối của mảng.
Hãy nhớ rằng, một con trỏ là một địa chỉ và phần cuối của mảng cũng là một địa chỉ.
Vì vậy, chúng ta đang nói nếu địa chỉ tại con trỏ nhỏ hơn con trỏ n, thì
chúng ta muốn thực thi phần thân của vòng lặp.
Con trỏ chỉ là một số nguyên, nó là một địa chỉ hệ thập lục phân.
Mỗi lần chúng ta tăng, nó sẽ chuyển đến địa chỉ tiếp theo. Chúng tôi có địa chỉ kết thúc, vì vậy chúng
tôi có thể nói đi qua vòng lặp cho đến khi chúng tôi kết thúc.
Và sau đó chúng tôi tăng dần chính con trỏ, nó sẽ
tăng địa chỉ để chuyển đến phần tử tiếp theo trong mảng về cơ bản vì đó
là những gì chúng tôi đang trỏ tới.
Sau đó, chúng ta có bên trong phần thân của vòng lặp, chúng ta nói rằng tổng cộng bằng con trỏ.
Chúng ta đang bỏ tham chiếu đến con trỏ để
nhận giá trị vì hãy nhớ rằng chúng ta muốn nhận giá trị mà chúng ta không muốn
lấy địa chỉ của con trỏ hoặc địa chỉ của con trỏ đang trỏ tới.
Và cuối cùng, chúng tôi trả về tổng. Vì vậy, đây sẽ là tính
tổng tất cả các phần tử trong một mảng.
Bạn sẽ nhận thấy trong phần chính, chúng tôi cũng đã khai báo hàm trong đó
trái ngược với phần trên cùng của tệp. Tôi thường thích đặt chúng ở đầu tệp.
Nhưng trong phần tử chính, chúng ta tạo một mảng gồm 10 phần tử, 3 7 âm 9, v.v.
Sau đó, chúng tôi chuyển vào mảng hoặc một tổng, và chúng tôi
chỉ định kích thước là 10.
Và những gì bạn sẽ nhận thấy là nó trả về giá trị là tổng của mảng.
Vì vậy, rất, rất hay khi sử dụng số học điểm này để lặp qua một mảng, chúng ta
có thể cộng với địa
chỉ tiếp theo và cũng có thể nhìn vào địa chỉ kết thúc để nhảy ra.
Điều này hiệu quả hơn với con trỏ nhìn vào địa chỉ kết
thúc thay vì bộ đếm nhìn vào nhỏ hơn n.
Và bạn cũng lưu ý rằng chúng tôi đã tạo chúng dưới dạng hằng số vì các hằng số không
thay đổi và điều đó hiệu quả hơn với trình biên dịch.
Mảng ở đây là một con trỏ không đổi có nghĩa là địa chỉ không thể thay đổi.
Bạn cũng nên nhận thấy trong ví
dụ này rằng để truyền một mảng cho một hàm, bạn chỉ cần chỉ định tên của mảng.
Vì vậy, chúng ta biết làm thế nào để vượt qua hàm raise. Và để tạo ra một con trỏ tới một
mảng, bạn chỉ cần chỉ định tên của mảng.
Chúng ta đã thấy điều đó khi gán phần tử đầu tiên của mảng cho một con trỏ.
Vì vậy, điều này ngụ ý rằng lệnh gọi hàm tổng mảng của
chúng, những gì đã được truyền cho hàm thực sự là một con trỏ đến các giá trị mảng.
Và điều này thực sự cho bạn biết rằng mảng và con trỏ có liên quan rất, rất chặt chẽ với
nhau, rằng một mảng không hơn gì một con trỏ.
Và điều này giải thích tại sao bạn có thể thay đổi các phần tử của một mảng từ bên trong một hàm.
Bởi vì cho đến thời điểm này, khi bạn truyền dữ liệu vào một hàm, dữ liệu đó sẽ
không bị thay đổi bên ngoài hàm đó trừ khi nó là một con trỏ.
Bởi vì đó là lý do tại sao chúng ta phải chuyển địa chỉ cho scanf.
Cách duy nhất mà các phần tử được thay đổi bên ngoài một hàm là
nếu bạn đang chuyển các con trỏ đến một hàm.
Và bởi vì các phần tử được sửa đổi bên trong hàm đó, điều này
ngụ ý rằng bạn đang truyền một con trỏ.
Và điều này một lần nữa chứng minh
rằng khi bạn rằng mảng và con trỏ rất giống nhau thì mảng thực sự là con trỏ chỉ
sử dụng cú pháp khác nhau.
Chúng ta sẽ nói về cách chúng ta có thể chuyển bằng tham chiếu hoặc thực
sự chuyển một bản sao của tham chiếu, điều này
sẽ cho phép bạn thay đổi dữ liệu trong một hàm bên ngoài hàm đó.
Nếu bạn còn nhớ từ một trong những thử thách trước đây
của chúng tôi, bất cứ khi nào chúng tôi muốn thay đổi dữ liệu trong một hàm, chúng
tôi phải sử dụng một biến toàn cục.
Bởi vì chúng tôi không hiểu khái niệm truyền
qua tham chiếu và chúng tôi không hiểu khái niệm con trỏ.
Nhưng tôi đã đề cập trước đó, một trong những lợi thế của con trỏ
là bây giờ bạn có thể thay đổi dữ liệu bên trong một hàm và nó sẽ được phản ánh bên ngoài hàm đó.
Nhưng đó là một bài giảng khác.
Nhưng bản thân khái niệm đó vì ví dụ trước đang chứng minh cách
mảng thực chất là con trỏ.
Vì vậy, bạn có thể thắc mắc tại sao tham số hình thức bên trong hàm không được khai báo là một con trỏ.
Vâng, nó có thể được. Chúng tôi chỉ có thể làm một cái gì đó như thế này, int mảng tổng, mảng sao int.
Chúng ta không cần phải khai báo nó dưới dạng một mảng.
Nó hoàn toàn hợp lệ vì các mảng và con trỏ giống nhau nên chúng ta có thể nói mảng int star.
Chúng tôi đã đề cập rằng chúng thực sự có quan hệ mật thiết với nhau.
Vì vậy, bạn có thể khai báo một kiểu mảng là một kiểu mảng int
bên trong hàm sum mảng hoặc bạn có thể khai báo nó như một con trỏ tới int.
Và đó là lý do tại sao bạn thấy nhiều hàm chấp nhận mảng dưới dạng tham số hoặc
là đối số trong đó các tham số thực sự là con trỏ.
Vì vậy, nếu bạn đang sử dụng các số chỉ mục để tham chiếu đến các phần tử của một mảng được truyền
cho một hàm, thì hãy khai báo tham số dưới dạng một mảng.
Một lần nữa sự tiện lợi của ký hiệu, đó chỉ là một cách
khác của ký hiệu, hoặc sử dụng dấu ngoặc và chỉ số con hoặc sử dụng con trỏ.
Bản thân mảng thường dễ đọc hơn về
mặt bảo trì chương trình, nó phản ánh chính xác hơn việc sử dụng mảng của hàm.
Nhưng con trỏ dễ sử dụng hơn.
Và nếu bạn đang sử dụng một đối số làm con trỏ tới mảng, hãy khai báo nó là con trỏ
kiểu trong tham số chính thức.
Vì vậy, đây là một ví dụ với ký hiệu con trỏ của hàm
mà ví dụ trước đó đang sử dụng ký hiệu mảng.
Ở đây chúng ta chỉ nói int start array
và những gì bạn sẽ nhận thấy là hàm ngay lập tức trở nên nhỏ
hơn rất nhiều, bởi vì chúng ta không phải gán con trỏ cho mảng cho phần tử đầu
tiên như chúng ta đã làm.
Vòng lặp cũng trở nên nhỏ hơn rất nhiều vì chúng ta không
cần thực hiện việc gán đó trong câu lệnh đầu tiên.
Chúng ta chỉ có thể nói cho đến khi mảng nhỏ hơn kết thúc mảng và
chúng ta có thể tăng mảng. Vì vậy, nó ít mã hơn một
chút, vẫn còn rất rõ ràng những gì đang xảy ra, hy vọng nếu bạn hiểu các mảng và con trỏ.
Chúng ta đang truyền vào mảng int star và chúng
ta không phải khởi tạo mảng đó nữa vì chúng ta đang truyền nó
trong con trỏ, chúng ta không khởi tạo con trỏ nữa.
Và sau đó chúng tôi thực sự đặt địa chỉ của phần cuối của mảng
thành một con trỏ không đổi,
phần cuối của mảng. Chúng tôi sử dụng điều
đó để nhảy ra khỏi vòng lặp và chúng tôi chỉ nói tổng
cộng bằng mảng sao, sử dụng toán tử hướng dẫn để bỏ tham chiếu lại mảng, trả về tổng.
Và sau đó hàm main hoàn toàn giống nhau ngoại trừ khai báo bây giờ là một con trỏ trái ngược với một mảng.
Vì vậy, đây là 2 ví dụ sử dụng các ký hiệu khác nhau nhưng cung cấp cùng một chức
năng và đó là lý do tại sao bạn thấy rất nhiều con trỏ làm tham
số bên trong một tham số hàm.
Vì vậy, để tóm tắt ở đây là một số điều hợp lệ khi bạn sử dụng
con trỏ và những thứ không hợp lệ.
Vì vậy, nếu chúng ta khai báo một số biến ở đây, chúng ta khai báo một mảng được gọi là kiếm
và nó chứa 3 phần tử và sau đó chúng ta khai báo 2 con trỏ.
Bây giờ trên những con trỏ đó, chúng ta có thể tính toán số học. Chúng ta có thể nói con trỏ một cộng một cộng.
Chúng ta có thể nói điểm hoặc 2 bằng điểm hoặc một cộng 2.
Chúng tôi thậm chí có thể nói con trỏ 2 bằng kiếm được cộng với một.
Hoàn toàn hợp lệ để làm điều đó bởi vì bạn có con trỏ và bạn đang sửa đổi con trỏ theo địa
chỉ, vì vậy bạn có thể thực hiện số học điểm.
Bạn không thể làm số học điểm trên mảng. Vì vậy, bạn không thể nói kiếm được cộng thêm.
Bạn không thể nói con trỏ 2 0. 2 cộng với 0. 1 vì
đó là những địa chỉ.
Và bạn không thực sự trỏ đến bất kỳ
thứ gì bên trong một mảng.
Và bạn không thể nhân số lần kiếm được điểm hoặc một để lấy điểm hoặc 2.
Chúng không hợp lệ.
Vì vậy, hãy chú ý đến cú pháp chính xác cho số học con
trỏ và cũng hiểu rằng số học điểm chỉ có thể áp dụng cho con trỏ chứ
không phải mảng.
Ngoài ra, các hàm xử lý mảng thực sự sử dụng con trỏ làm đối số.
Bạn có một sự lựa chọn giữa ký hiệu mảng và ký hiệu con trỏ
để viết các hàm xử lý mảng.
Vì vậy, nếu bạn đang xử lý hàm ngẫu nhiên, bạn hoàn toàn có thể sử dụng con trỏ làm tham số.
Bạn có thể chọn cái nào bạn muốn sử dụng.
Nhưng sử dụng con trỏ thường ít mã hơn và hiệu quả hơn.
Việc sử dụng ký hiệu mảng làm rõ ràng hơn rằng hàm đang làm việc với mảng và ký
hiệu mảng có giao diện quen thuộc hơn đối với các lập trình viên đã có nền
tảng về lập trình trong một số ngôn ngữ nhất định.
Vì vậy, nếu bạn lập trình trước Fortran và Pascal, v.v., bạn có
thể sử dụng ký hiệu mũi tên.
Các lập trình viên khác có thể quen làm việc với con trỏ hơn và có thể thấy
ký hiệu con trỏ tự nhiên hơn, có ý nghĩa hơn.
Nó gần với ngôn ngữ máy hơn bằng cách sử dụng số học
điểm và ký hiệu con trỏ với một số trình biên dịch, nó dẫn đến mã hiệu quả hơn, một lý
do khác để sử dụng nó.
Vì vậy, chúng ta hãy xem xét các ví dụ này bên trong
các khối mã.
Vì vậy, đây là ví dụ của chúng tôi từ các trang trình bày. Chúng tôi có khai báo hàm của chúng tôi ở dòng 3.
Đó là một tổng mảng.
Và trong ví dụ này, chúng ta sẽ sử dụng ký hiệu mảng.
Vì vậy, chúng ta sẽ sử dụng dấu ngoặc khi chúng ta sử dụng các chỉ mục.
Và chúng ta sẽ gọi nó là
truyền trong mảng giá trị và truyền kích thước.
Vì vậy hàm tính tổng mảng nhận một mảng số nguyên. Điều đầu tiên bạn phải làm là bạn
phải tạo một con trỏ mà bạn muốn sử dụng cho phép
tính điểm trên dòng 14. Và sau đó bạn phải gán phần
cuối của mảng cho mảng địa chỉ cộng với kích thước.
Đó là phần cuối của mảng, bây giờ bạn có thể sử dụng để thoát khỏi vòng lặp.
Nhưng chúng ta phải gán con trỏ cho mảng.
Chúng ta biết rằng chúng ta có thể gán mảng cho con
trỏ trỏ đến phần tử đầu tiên chỉ bằng cách sử dụng tên của mảng.
Chúng tôi không cần phải sử dụng địa chỉ của tác.
Chúng tôi có thể nếu chúng tôi muốn, chúng tôi thực sự có thể làm điều gì đó như thế này.
Và điều này cũng tốt.
Và sau đó chúng tôi cộng cộng với con trỏ. Chúng tôi đang gia tăng con trỏ bởi vì tất
cả những gì đang làm được tăng đến địa chỉ tiếp theo. Nó trỏ đến phần tử tiếp theo trong mảng.
Và sau đó ở dòng 18, chúng ta đang tham chiếu đến con trỏ để tính tổng,
tổng bằng, tổng cộng với giá trị của con trỏ mà nó trỏ tới.
Vì vậy, nếu chúng ta xây dựng điều này, chúng ta có một cảnh báo, đó là main
không phải là int, chúng ta muốn thay đổi điều này vì việc
trả về các giá trị lỗi từ main và chỉ cần nói
trả về 0 là điều tốt.
Bạn có thể trả lại nếu có lỗi trong
main, bạn trả về số âm. Bây giờ chúng ta chạy điều này, bạn sẽ thấy rằng nó chỉ
thực hiện tổng các giá trị trong mảng, là 3 cộng 7 cộng với âm 9, v.v., thậm chí
không chắc đó là gì nhưng có vẻ như nó là 21.
Bây giờ chúng ta có thể dễ dàng sửa đổi tham số mảng này
để nhận một con trỏ bằng cách khai báo dấu hoa thị trước con trỏ.
Chúng tôi gọi nó theo cùng một cách. Chúng tôi chỉ sửa đổi. Chúng ta không cần khai
báo con trỏ nữa. Chúng ta có thể muốn thay
đổi tên để dễ dàng hơn, nhưng chúng ta không cần phải khai báo con trỏ này nữa.
Chúng ta vẫn muốn lấy phần cuối của mảng và
chúng ta cũng không cần gán nó nữa.
Chúng ta chỉ có thể có một thứ trống rỗng ở đó. Và nó thực sự có thể hữu ích hơn nếu có một vòng lặp trong khi ở đây.
Nhưng nếu chúng ta không có nhiệm vụ, chúng ta có thể đặt dấu chấm phẩy ở đó.
Và bây giờ chúng tôi tốt. Chúng tôi vẫn muốn hủy tham chiếu nó và chúng tôi vẫn muốn trả lại nó.
Nhưng nếu chúng ta
xây dựng điều này, chúng ta muốn
đảm bảo rằng chúng ta xác định khai báo hàm như một con trỏ kể từ khi chúng ta thay đổi nó.
Và đây có thể là bất kỳ tên nào nhưng chúng tôi sẽ nhất quán.
Bây giờ chúng tôi xây dựng,
chúng tôi muốn đảm bảo rằng chúng tôi đang sử dụng lại tất cả
các biến mà chúng tôi đã thay đổi.
Vì vậy, bây giờ chúng tôi đã xây dựng thành công, chúng tôi chạy nó và
bạn thấy bạn nhận được cùng một kết quả là 21.
Vì vậy, hãy hiểu sự khác biệt này giữa việc sử dụng con trỏ làm tham số chính thức trong
mảng, bạn có
thể sử dụng chúng thay thế cho nhau. Nó chỉ là một sự tiện lợi về mặt lưu ý.
Nhưng bạn thường có ít mã hơn, khi bạn sử dụng một con trỏ.
Và bạn có thể thao tác với nó nhiều hơn và bạn có thể làm những việc mạnh
mẽ hơn, nó thường hiệu quả hơn dựa trên trình biên dịch. Cảm ơn bạn.