30/09/2018, 23:15

[Hỏi ngu] : Định nghĩa mảng động

Hôm nay mình gặp 1 ý kiến như sau:
" Khi chương trình cho nhập vào 1 số n sau đó tạo ra 1 mảng với số phần tử bằng số nhập vào thì mảng này được gọi là mảng động"
Mong mọi người cho ý kiến về nhận định này.

Trần Ngọc Khoa viết 01:30 ngày 01/10/2018

Mảng động là mảng được cấp phát bộ nhớ khi chạy chương trình, còn mảng tĩnh là mảng được cấp phát bộ nhớ khi lập trình.
Nhận định trên là đúng.

Đỗ Trung Quân viết 01:26 ngày 01/10/2018

" Khi chương trình cho nhập vào 1 số n sau đó tạo ra 1 mảng với số phần tử bằng số nhập vào thì mảng này được gọi là mảng động"

Điều này sai. Mảng động là mảng có thể thay đổi kích thước của mảng bất cứ khi nào thêm hoặc xóa phần tử trong mảng.
Example tạo array

input n?
int staticArr= new int[n]; -> size was fixed
for (int i = 0; i < staticArr.Length; i++)
{
	staticArr[i] = i;
}

Example - dynamic array

//khai báo 1 mảng có độ dài bằng 0
int dynamicArr = new int[0];
for (int i = 0; i < 10; i++)
{
  // resize mảng trước mỗi lần add or remove element
  Array.Resize(ref  dynamicArr , dynamicArr .Length+1);
 // truyền giá trị cho array
  dynamicArr[dynamicArr .Length - 1] =  i;
}

Chú ý Array.Resize không thực sự resize array. Nó tạo ra 1 array mới với capacity mới sau đó copy các thành phần từ array cũ sang array cũ và thay đổi array cũ bằng array mới

Trong C# có thể dùng Generic List<‘T’> như mảng động
Tham khảo ở dây

Bài liên quan
0