cuốn sách gpt4 ai đã làm

Con trỏ, bản chất của ngôn ngữ C

In lại Tác giả: Sahara Thời gian cập nhật: 2024-12-07 12:25:25 57 4
mua khóa gpt4 Nike

Con trỏ, bản chất của ngôn ngữ C

Team Chờ đợi một vài ngày nữa để mình nói xong phần Mục cây trước (vì sau này trên cây có nhiều thứ cần phải Bệnh cây để tính) LCA).

con trỏ là gì

Một biến chứa địa chỉ của một biến được gọi là con trỏ.

Đây là một định nghĩa sơ bộ nhưng Defad cho rằng định nghĩa này không dễ hiểu nên chúng ta sẽ không xem xét nó nữa.

Máy tính của chúng tôi đều có bộ nhớ truy cập ngẫu nhiên (RAM), chính là thẻ nhớ.

Sau đó, thẻ nhớ của tôi là một mảng và rõ ràng địa chỉ là 0. .

Điều này cũng giải thích tại sao không thể sử dụng NULL, vì phần \(0\)th thường không được sử dụng.

Hiện tại chúng ta có một số nguyên biến x.

int x;

Dấu x này ở đâu trong thẻ nhớ?

& có thể lấy chỉ số dưới của biến trong thẻ nhớ, do đó, chỉ số dưới của x là &x..

Vậy làm cách nào để truy cập vào &x thẻ nhớ?

Vừa rồi chúng tôi đã nói rằng bộ nhớ tiêu đề địa chỉ là 0. Theo phương pháp truy cập mảng truy cập, chúng tôi có thể nghĩ đến việc use 0[&x] để truy cập biến x.

Tôi không viết một cách mù quáng, tôi chỉ nghĩ cách này dễ hiểu hơn khi thực sự sử dụng thì người viết bài này nên cắt làm double.

Vì vậy, hiện tại chúng tôi sử dụng một biến để lưu trữ số chỉ dưới của x.

int *p = &x;

Kiểu int* đại diện cho một kho lưu trữ chỉ số dưới của biến int trong thẻ nhớ.

Vì vậy, chúng tôi có thể sử dụng p thay vì &x là 0[p].

Nhưng bây giờ chúng ta có đường cú pháp... .

*p có nghĩa là 0[p], vì bản chất của công việc truy cập mảng là chuyển động của con trỏ. Ví dụ: a[3] thực tế là *(a + (3)).

Vì vậy, chúng tôi có thể sử dụng *p để truy cập các số dưới đây được lưu bởi p trong thẻ nhớ.

Điều tương tự cũng xảy ra với *&x, nhưng vì tất cả các biến của bạn đều ở đây nên bạn không cần phải xóa chỉ số dưới và truy cập lại số dưới.

Con trỏ có thể làm gì?

Chúng ta có một ngăn xếp lưu trữ các chức năng mà chúng ta gọi và các biến thể được mở bên trong hàm, được gọi là phá tổ hệ system.

Nhưng vấn đề là điều này lại là biến chúng ta truyền vào hàm có giá trị được truyền vào và hàm không biết nên thay đổi giá trị hoặc biến chính.

Bây giờ mọi việc dễ dàng hơn nhiều khi chúng ta có con trỏ.

Ví dụ: write chức năng thay đổi...

void Exchange(int *x, int *y) { *x ^= *y; *y ^= *x; ​​​​*x ^= *y }

Bạn có thể chuyển địa chỉ và thực hiện trao đổi nội bộ.

Nếu vừa rồi tôi không đề cập đến địa chỉ thì đó sẽ là số chỉ dưới của thẻ nhớ.

Ngoài ra, chúng tôi có thể xin một phần bộ nhớ và giải nén nó sau khi sử dụng.

// Làm gì đó miễn phí ở đây(a); // Làm gì đó miễn phí ở đây(a);

Cái được áp dụng có thể được sử dụng như một mảng hoặc một biến và yêu cầu truy cập con trỏ (tương tự *p).

Ví dụ: một nút trong cây cân bằng được bổ sung khi được và chèn được giải nén khi bị xóa.

Điều này thực sự tương thích với một cơ chế thu gom rác.

Cơ chế thu gom rác có nghĩa là, ví dụ: khi một nút bị xóa trong cây cân bằng, nút mới được tạo tiếp theo sẽ được lấy trực tiếp từ nút mới đã bị xóa.

Cuối cùng, bài viết về con trỏ và bản chất của ngôn ngữ C kết thúc tại đây. blog tương lai .

57 4 0
Bài viết khuyến nghị: Cách tính hiệu suất trong Epicor
Bài viết khuyến nghị: RocketMQ Series 2: Cách tạo ra một thế giới mới
Bài viết khuyến nghị: Siemens
Bài viết khuyến nghị: Tóm tắt cấu trúc cơ sở dữ liệu Influxdb
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress