Sự khác biệt giữa Con trỏ và Mảng

Sự khác biệt giữa Con trỏ và Mảng
Sự khác biệt giữa Con trỏ và Mảng

Video: Sự khác biệt giữa Con trỏ và Mảng

Video: Sự khác biệt giữa Con trỏ và Mảng
Video: C# beginners :- Assembly , EXE and DLL 2024, Tháng bảy
Anonim

Con trỏ so với Mảng

Con trỏ là một kiểu dữ liệu chứa một tham chiếu đến một vị trí bộ nhớ (tức là một biến con trỏ lưu trữ một địa chỉ của một vị trí bộ nhớ trong đó một số dữ liệu được lưu trữ). Mảng là cấu trúc dữ liệu được sử dụng phổ biến nhất để lưu trữ một tập hợp các phần tử. Hầu hết các ngôn ngữ lập trình đều cung cấp các phương thức để dễ dàng khai báo mảng và truy cập các phần tử trong mảng.

Con trỏ là gì?

Con trỏ là một kiểu dữ liệu lưu trữ địa chỉ của một vị trí bộ nhớ trong đó một số dữ liệu được lưu trữ. Nói cách khác, một con trỏ giữ một tham chiếu đến một vị trí bộ nhớ. Việc truy cập dữ liệu được lưu trữ trong vị trí bộ nhớ được tham chiếu bởi con trỏ được gọi là hội nghị truyền hình. Khi thực hiện các thao tác lặp lại như duyệt cây / chuỗi, tra cứu bảng, v.v., sử dụng con trỏ sẽ cải thiện hiệu suất. Điều này là do con trỏ tham chiếu và sao chép rẻ hơn so với việc thực sự sao chép và truy cập dữ liệu được trỏ bởi con trỏ. Con trỏ null là một con trỏ không trỏ đến bất cứ thứ gì. Trong Java, việc truy cập con trỏ null sẽ tạo ra một ngoại lệ được gọi là NullPointerException.

Mảng là gì?

Được thể hiện trong hình 1, là một đoạn mã thường được sử dụng để khai báo và gán giá trị cho một mảng. Hình 2 mô tả một mảng trông như thế nào trong bộ nhớ.

giá trị int [5];

giá trị [0]=100;

giá trị [1]=101;

giá trị [2]=102;

giá trị [3]=103;

giá trị [4]=104;

Hình 1: Mã khai báo và gán giá trị cho mảng

100 101 102 103 104
Chỉ số: 0 1 2 3 4

Hình 2: Mảng được lưu trữ trong bộ nhớ

Đoạn mã trên xác định một mảng có thể lưu trữ 5 số nguyên và chúng được truy cập bằng cách sử dụng các chỉ số từ 0 đến 4. Một thuộc tính quan trọng của mảng là, toàn bộ mảng được cấp phát như một khối bộ nhớ duy nhất và mỗi phần tử nhận được không gian riêng trong mảng. Khi một mảng được xác định, kích thước của nó sẽ được cố định. Vì vậy, nếu bạn không chắc chắn về kích thước của mảng tại thời điểm biên dịch, bạn sẽ phải xác định một mảng đủ lớn để ở bên an toàn. Tuy nhiên, hầu hết các trường hợp, chúng ta thực sự sẽ sử dụng ít phần tử hơn chúng ta đã phân bổ. Vì vậy, một lượng bộ nhớ đáng kể thực sự bị lãng phí. Mặt khác, nếu “mảng đủ lớn” không thực sự đủ lớn, chương trình sẽ bị lỗi.

Sự khác biệt giữa Con trỏ và Mảng là gì?

Con trỏ là kiểu dữ liệu lưu trữ địa chỉ của một vị trí bộ nhớ trong đó một số dữ liệu được lưu trữ, trong khi Mảng là cấu trúc dữ liệu được sử dụng phổ biến nhất để lưu trữ một tập hợp các phần tử. Trong ngôn ngữ lập trình C, việc lập chỉ mục mảng được thực hiện bằng cách sử dụng số học con trỏ (tức là phần tử thứ i của mảng x sẽ tương đương với(x + i)). Do đó, trong C, tập hợp các con trỏ trỏ đến một tập hợp các vị trí bộ nhớ liên tiếp, có thể được coi là một mảng. Hơn nữa, có sự khác biệt trong cách toán tử sizeof hoạt động trên con trỏ và mảng. Khi được áp dụng cho một mảng, toán tử sizeof sẽ trả về toàn bộ kích thước của mảng, trong khi khi áp dụng cho một con trỏ, nó sẽ chỉ trả về kích thước của con trỏ.

Đề xuất: