sách gpt4 ăn đã đi

Sự khác biệt giữa const int*, const int * const và int const * là gì?

In lại Tác giả: trợ lý lỗi Thời gian cập nhật: 28-10-2023 01:30:04 30 4
mua khóa gpt4 giày nike

Tôi luôn bối rối làm thế nào để sử dụng nó một cách chính xác hằng số int*hằng số int * hằng sốsố nguyên *. Có bộ quy tắc nào xác định những gì bạn có thể và không thể làm không?

Tôi muốn biết tất cả các cân nhắc liên quan đến việc chuyển nhượng, chuyển sang các hàm, v.v.

câu trả lời hay nhất

Đọc ngược (theo Quy tắc theo chiều kim đồng hồ/xoắn ốc lái xe):

  • số nguyên* - con trỏ tới int
  • số nguyên * - con trỏ tới const int
  • số nguyên * hằng số - con trỏ const tới int
  • int const * const - con trỏ const tới const int

Bây giờ là cái đầu tiên hằng số Có thể ở hai bên của loại, vì vậy:

  • hằng số * == số nguyên *
  • hằng số int * hằng số == int const * const

Nếu bạn thực sự muốn phát điên, bạn có thể làm điều này:

  • số nguyên ** - con trỏ tới int
  • số nguyên ** hằng số - một con trỏ const tới một con trỏ int
  • số nguyên * hằng số * - con trỏ tới const, con trỏ tới int
  • số nguyên ** - một con trỏ tới một const int
  • số nguyên * hằng số * hằng số - một con trỏ hằng trỏ tới một con trỏ hằng trỏ tới một int
  • ...

Để đảm bảo chúng ta rõ ràng hằng số nghĩa:

số nguyên a = 5, b = 10, c = 15;

const int* foo; // con trỏ tới hằng số int.
foo = &a; // gán vào nơi foo trỏ tới.

/* câu lệnh giả định*/
*foo = 6; // giá trị của a không thể thay đổi thông qua con trỏ.

foo = &b; // con trỏ foo có thể thay đổi được.



int *const bar = &c; // con trỏ hằng số tới int
// lưu ý, bạn thực sự cần phải thiết lập con trỏ
// ở đây vì bạn không thể thay đổi nó sau này ;)

*bar = 16; // giá trị của c có thể được thay đổi thông qua con trỏ.

/* câu lệnh giả định*/
bar = &a; // không thể thực hiện được vì bar là con trỏ hằng số.

đồ ăn là một con trỏ biến tới một số nguyên không đổi. Điều này cho phép bạn thay đổi những gì được trỏ tới, nhưng không thay đổi giá trị được trỏ tới. Trường hợp phổ biến nhất là chuỗi kiểu C có con trỏ tới const ký tự con trỏ. Bạn có thể thay đổi các chuỗi được trỏ tới nhưng không thể thay đổi nội dung của các chuỗi đó. Điều này rất quan trọng khi chính chuỗi đó nằm trong phân đoạn dữ liệu của chương trình và không được thay đổi.

thanh Là một con trỏ không đổi hoặc cố định tới một giá trị có thể thay đổi được. Nó giống như một tài liệu tham khảo mà không có thêm cú pháp. Do thực tế này, thông thường bạn sẽ sử dụng T* hằng số Sử dụng tài liệu tham khảo thay vì con trỏ trừ khi bạn cần cho phép VÔ GIÁ TRỊ con trỏ.

Về C++ - sự khác biệt giữa const int*, const int * const và int const * là gì? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1143262/

30 4 0
trợ lý lỗi
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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