sách gpt4 ăn đã đi

Giải thích chi tiết về ví dụ quy tắc xoắn ốc của việc xác định biến C++

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 28 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này Giải thích chi tiết các ví dụ quy tắc xoắn ốc về xác định biến trong C++ được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Lời nói đầu.

Trong C++, một mã định danh được kết hợp với nhiều dấu phân cách sửa đổi khác nhau, làm cho ý nghĩa ban đầu của mã định danh không trực quan đến mức có thể nhìn thấy ngay. Nó thậm chí còn yêu cầu phân tích cẩn thận để biết ý nghĩa cụ thể của mã định danh.

Ví dụ:

?
1
vô hiệu (* tín hiệu ( số nguyên , vô hiệu (*fp)( số nguyên ))))( số nguyên );

Tín hiệu là gì?

Luật xoắn ốc.

Để biết cách xác định các biến, có một "Quy tắc theo chiều kim đồng hồ/xoắn ốc" không chính thức có thể được sử dụng để giúp xác định chúng.

Nội dung của luật này, nói một cách đơn giản, để tìm ra ý nghĩa của một mã định danh chưa biết, chúng ta có thể:

1. Bắt đầu từ định danh ta cần xác định, vẽ một đường tròn theo chiều kim đồng hồ. Khi gặp các ký hiệu sau hãy thay thế bằng ngữ nghĩa tương ứng:

  • [x] hoặc [] => mảng hoặc mảng có dung lượng x
  • (type1,type2...) => Hàm nhận type1, type2..., giá trị trả về là (cần xác định)
  • * => con trỏ tới (loại cần xác định)

2. Lặp lại các bước trên cho đến khi duyệt hết tất cả các ký hiệu trong câu lệnh.

3. Luôn phân tích phần trong ngoặc đơn trước.

Bài tập thực địa.

Một ví dụ đơn giản.

Hãy bắt đầu với một cách đơn giản và xác định ý nghĩa của str trong câu lệnh sau:

                     +-------+ | +-+ | | ^ | | ký tự *str[10]; ^ ^ | | | +---+ | +--------+ 。

Theo định luật xoắn ốc, như thể hiện trong sơ đồ đường trên, .

  • Bắt đầu từ str, đối tượng cần xác định.
  • Điều đầu tiên gặp trên đường xoắn ốc là dấu ngoặc vuông [ bên trái, từ đó chúng ta biết rằng str là một mảng có kích thước 10.
  • Tiếp tục xoay và gặp *, vậy str là một mảng có kích thước 10, các phần tử của mảng là con trỏ.
  • Tiếp tục, gặp gỡ; xác định sự kết thúc của câu nói.
  • Tiếp tục, chúng ta gặp char, vậy str là một mảng có kích thước 10, và các phần tử của mảng là con trỏ tới kiểu char.

Trình độ cao.

Quay lại câu đầu bài để xác định ý nghĩa của tín hiệu.

                      +-----------------------------+ | +---+ | | +---+ |+-+| | | ^ | |^ || | void (*signal(int, void (*fp)(int)))(int); ^ ^ | ^ ^ || | | +------+ | +--+| | | | +--------+ | +----------------------------------+ 。

Biểu đồ đường trên được vẽ dựa trên quy tắc xoắn ốc và sau đó có thể phân tích:

Bắt đầu từ tín hiệu được xác định, (dấu ngoặc trái lần đầu tiên xuất hiện, cho biết tín hiệu là một hàm và các tham số đầu vào là int và....

Ở đây chúng ta cần áp dụng thêm quy tắc xoắn ốc để xác định ý nghĩa của fp trước khi có thể xác nhận thêm các tham số đầy đủ của hàm tín hiệu. Vì vậy hãy bắt đầu từ fp và thực hiện một đường xoắn ốc phụ.

Bởi vì phần được bao quanh bởi dấu ngoặc đơn cần được phân tích cú pháp trước tiên nên điều đầu tiên gặp phải sau khi duyệt là *, vì vậy fp là một con trỏ.

Tiếp tục phân tích fp và gặp (, do đó fp là một con trỏ tới một hàm. Hàm này nhận tham số đầu vào kiểu int.

Tiếp tục, gặp phải void, vì vậy fp là một con trỏ tới một hàm. Hàm này nhận tham số đầu vào có kiểu int và trả về giá trị null.

Tại thời điểm này, việc phân tích fp đã hoàn tất và chúng ta có thể biết rằng loại tín hiệu là:

  • là một hàm với các tham số đầu vào:
    • một kiểu int
    • Một con trỏ tới hàm nhận tham số đầu vào kiểu int và trả về giá trị null

Đường dẫn chạy vào vòng xoáy của tín hiệu và gặp * (ngay bên trái tín hiệu) nên tín hiệu là như vậy.

  • Một hàm có tham số đầu vào là:
    • một kiểu int
    • Một con trỏ tới hàm nhận tham số đầu vào kiểu int và trả về giá trị null
  • Giá trị trả về là một con trỏ

Continue, gặp (, continue ở trên, giá trị trả về là một con trỏ tới hàm khác, hàm được trỏ để nhận tham số đầu vào int.

Cuối cùng, khi gặp void, giá trị trả về của hàm được trỏ đến bởi giá trị trả về tín hiệu sẽ trống.

Cuối cùng, chúng ta hãy xem loại tín hiệu hoàn chỉnh: nó nhận một int, một con trỏ tới hàm nhận int và trả về giá trị null, một hàm có hai tham số này và giá trị trả về là một con trỏ tới một hàm nhận kiểu int và trả về giá trị null.

Xác định chức năng thành viên.

Truyền xoắn ốc không đưa ra phán đoán khi có liên quan đến const, nhưng vì theo mặc định, const sửa đổi phần tử ngay bên trái của nó, nếu không có phần tử ở bên phải thì phần tử ở bên trái sẽ được sửa đổi. Do đó, bạn chỉ cần nhìn vào const và các phần tử mà nó sửa đổi một cách tổng thể, bạn vẫn có thể sử dụng định luật xoắn ốc.

Xét các câu sau:

?
1
hằng số số nguyên * hằng số Phương pháp 3( hằng số số nguyên * hằng số &) hằng số ;

Khi một hàm được theo sau bởi một hằng, điều đó có nghĩa là *đây là một hằng số trong phạm vi của hàm thành viên, nghĩa là thực thể của lớp không thể được sửa đổi trong phần nội dung của hàm.

Hãy phân tích câu nói trên:

  • Bắt đầu từ Method3, chúng ta gặp phải (, vì vậy Method3 là hàm nhận tham chiếu dưới dạng tham số đầu vào const int*const& một phần.
  • Kiểu của tham chiếu này là const int*const, một con trỏ hằng tới một hằng số nguyên.
  • Tiếp tục gặp *const nên giá trị trả về của hàm là con trỏ hằng. Kiểu được con trỏ trỏ đến là hằng số nguyên const int.
  • Const ở cuối hàm, như đã đề cập trước đó, cho biết rằng phiên bản sẽ không được sửa đổi trong thân hàm.

Tài nguyên liên quan.

  • ``Quy tắc theo chiều kim đồng hồ/xoắn ốc''
  • Khai báo 'const' của C++: Tại sao và như thế nào

Tóm tắt.

Trên đây là phương pháp xử lý IP thật của khách hàng của tôi, hy vọng nội dung bài viết này có giá trị tham khảo nhất định cho quá trình học tập hoặc làm việc của mọi người.

Liên kết gốc: https://www.cnblogs.com/Wayou/p/cpp_clockwise_spiral_rule.html.

Cuối cùng, bài viết này về giải thích chi tiết về ví dụ quy tắc xoắn ốc của việc xác định biến C++ kết thúc ở đây. Nếu bạn muốn biết thêm về giải thích chi tiết về ví dụ quy tắc xoắn ốc của việc xác định biến C++, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các phần liên quan. Tôi hy vọng tất cả các bạn ủng hộ blog của tôi trong tương lai! .

28 4 0
qq735679552
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