>> SPEAKER 1: Nó chỉ ra chúng ta có thể trao đổi thành công các giá trị trong hai
biến bằng cách truyền chúng vào một hoạt động không theo giá trị hoặc bằng cách sao chép, nhưng
bằng cách tham chiếu hoặc địa chỉ của họ.
Nói cách khác, chúng ta cần phải tận dụng một cái gì đó được gọi là một con trỏ.
Một con trỏ, thực sự, chỉ là địa chỉ của một số biến.
Và do đó, nếu chúng tôi cung cấp một chức năng gọi, nói, trao đổi với địa chỉ của
một biến và địa chỉ của người khác biến, trao đổi nên được trao quyền để
đi đến từng địa chỉ của những và thực sự thay đổi
giá trị đang có.
>> Chúng ta hãy xem này trong ngữ cảnh.
Hãy reimplement trao đổi như sau.
Trước tiên, hãy thay đổi một không phải là một int nhưng là một con trỏ đến một int hoặc
địa chỉ của một int.
Sau đó, chúng ta hãy làm tương tự cho b, thay đổi nó từ một int là một con trỏ đến một
int hoặc địa chỉ của một int.
>> Sau đó bên trong trao đổi, chúng ta hãy vẫn tuyên bố tmp để chúng tôi có một
nơi tạm thời cho một giá trị của.
Nhưng một giá trị không phải là một chính nó, bởi vì, một lần nữa, một giờ là địa chỉ
một số int.
Vì vậy, nếu chúng ta muốn đi đến địa chỉ đó và được int tại địa chỉ đó, chúng tôi có
dereference con trỏ này, cũng bằng cách các nhà điều hành sao, viết sao một.
>> Tiếp theo, tôi không muốn thay đổi giá trị của a.
Tôi muốn thay đổi giá trị tại một, giữ trong tâm trí, một lần nữa,
một là một địa chỉ.
Vì vậy, để làm như vậy, tôi một lần nữa cần nói sao một được.
Và bây giờ tôi muốn đưa vào giá trị đó là tại b, không phải là giá trị của b,
cũng là một địa chỉ.
>> Vì vậy, một lần nữa tôi nói, sao b.
Sau đó trong dòng cuối cùng của tôi, tôi cần phải ghi đè lên những gì đang có địa chỉ b với
những gì đã được ở vị trí ban đầu của.
Để làm điều đó, tôi làm sao b được tmp.
>> Bây giờ vào cuối ngày, điều này chức năng vẫn chỉ là
ba dòng mã.
Nhưng vì đó là thao tác các giá trị bằng cách địa chỉ của họ và không phải là
giá trị liệu đã được thông qua vào chức năng, tôi cho rằng trao đổi tại là
trao quyền để thay đổi các giá trị được thông qua tại thông qua địa chỉ của họ.
>> Nhưng tôi cần phải thực hiện một sự thay đổi vẫn còn.
Tôi không còn có thể vượt qua trong x và y mình.
Tôi cần phải vượt qua trong các địa chỉ của x và y.
Và để làm điều đó, tôi cần một số hơi khác nhau ký hiệu lên hàng đầu.
Tôi muốn trao đổi x và y bằng cách đi qua trong địa chỉ của x, được chỉ định bởi
ký hiệu x, và địa chỉ của y, được chỉ ra bởi ký hiệu y.
>> Tương tự như vậy, lên hàng đầu bây giờ tôi cần phải thay đổi mẫu thử nghiệm của chức năng
phù hợp với sự thay đổi mà tôi đã thực hiện, do đó, một là, một lần nữa, một con trỏ đến một int.
b là, một lần nữa, một con trỏ đến một int.
Và bây giờ tôi có thể lưu các tập tin của tôi.
Và chúng ta hãy biên dịch lại và chạy nó.
>> Hãy trao đổi dấu chấm dấu gạch chéo trao đổi.
Và lần này, x và y có thực sự bây giờ trao đổi như vậy mà giá trị của chúng không
1 và 2, nhưng 2 và 1.