Cách Trả Về Một Mảng

Mục lục:

Cách Trả Về Một Mảng
Cách Trả Về Một Mảng

Video: Cách Trả Về Một Mảng

Video: Cách Trả Về Một Mảng
Video: C - Bài 22: Truyền mảng và trả về mảng từ hàm. 2024, Tháng mười một
Anonim

Mảng là một trong những hình thức lưu trữ dữ liệu có cấu trúc đơn giản nhất. Vì các vùng bộ nhớ không thể phân chia được cấp phát để lưu trữ các mảng một chiều và hầu hết các ngôn ngữ lập trình đều có cấu trúc cú pháp để khai báo, chúng được sử dụng chuyên sâu làm bộ đệm để chuyển một lượng lớn thông tin đến các hàm khác nhau (bao gồm cả thư viện). Đổi lại, các hàm đôi khi cần trả về một mảng.

Cách trả về một mảng
Cách trả về một mảng

Cần thiết

  • - trình soạn thảo văn bản;
  • - Trình biên dịch và liên kết C hoặc C ++.

Hướng dẫn

Bước 1

Trả về dữ liệu từ một hàm hoặc phương thức bằng cách đặt nó vào một mảng có độ dài cố định, được phân bổ bởi người gọi và được truyền bằng tham chiếu. Xác định kiểu dữ liệu thích hợp, ví dụ: typedef int t_array10 [10]; Sử dụng kiểu dữ liệu này trong khai báo và triển khai hàm hoặc phương thức được yêu cầu: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Gọi thích hợp: int aNumbers [10]; ReturnArray (aNumbers); Nhược điểm của phương pháp này là độ dài của mảng là cố định.

Bước 2

Trả về dữ liệu mảng bằng cách đặt nó vào bộ đệm đầu ra do người gọi cấp phát được chuyển qua bởi con trỏ. Nguyên mẫu của một hàm hoặc phương thức có thể chứa một tham số được khai báo cả trong ký hiệu mảng mà không có đặc tả kích thước: void ReturnArray (int anArray , int nSize); hoặc dưới dạng con trỏ: void ReturnArray (int * pnArray, int nSize); Trong cả hai trường hợp, tham số định danh có thể được sử dụng trong ký hiệu mảng: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // gọi int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Phương pháp truyền mảng tới các hàm và trả về dữ liệu mảng từ chúng được sử dụng trong phần lớn các trường hợp khi phát triển chương trình C. Lưu ý rằng Các hàm và phương thức chấp nhận và trả về dữ liệu theo cách này, như một quy tắc, phải có một tham số bổ sung mà qua đó kích thước thực của bộ đệm được chuyển qua.

Bước 3

Trả về một mảng được tạo trong một hàm hoặc phương thức. Về mặt hình thức, trong trường hợp này, không nên trả về một mảng mà là một con trỏ đến phần tử đầu tiên của nó: int * ReturnArray () {int * pnArray = new int [10]; // làm việc với pnArray return pnArray;} // lấy một con trỏ đến mảng đã tạo int * pnNumbers = ReturnArray (); // sử dụng delete pnNumbers; // xóa Phương pháp này có một số hạn chế. Vì vậy, mảng phải được đặt trong heap. Ngoài ra, việc xóa nó phải được thực hiện bằng phương thức tương ứng với lần tạo (xóa trong trường hợp sử dụng mới, miễn phí cho malloc, v.v.).

Bước 4

Sử dụng các lớp vùng chứa để trả về mảng một cách thuận tiện khi phát triển các chương trình C ++. Ví dụ về việc tạo và trả về một mảng là đối tượng của lớp mẫu vectơ của Thư viện Mẫu chuẩn C ++ được chỉ định cho int có thể trông giống như sau: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Lưu ý rằng hầu hết các khuôn khổ phổ biến đều cung cấp các lớp mạnh mẽ hoặc các mẫu lớp mảng. Họ thường triển khai khái niệm chia sẻ dữ liệu ngầm với việc đếm tham chiếu và sao chép trên ghi. Do đó, việc trả về theo giá trị của các mảng như vậy từ các hàm được thực hiện rất hiệu quả và có liên quan đến mức tiêu thụ tài nguyên máy tính tối thiểu.

Đề xuất: