So sánh con trỏ và mảng năm 2024
Trong bài học này, Lập trình không khó sẽ cùng các bạn đi tìm hiểu mối quan hệ giữa con trỏ và mảng trong ngôn ngữ lập trình C. Bạn sẽ học thêm về một số toán tử của con trỏ, sử dụng các toán tử đó để duyệt mảng. Do đó, bạn sẽ biết thêm 1 cách mới để lặp qua mảng sử dụng con trỏ. Tất nhiên, mục tiêu cao hơn hết là giúp bạn hiểu sâu hơn, biết thêm các kiến thức về con trỏ trong ngôn ngữ C. Show Trước khi bạn bắt đầu bài học này, bạn cần chắc chắn mình nắm rõ các kiến thức dưới đây:
NỘI DUNG BÀI VIẾT Các phần tử của mảng là các ô nhớ liên tiếpNhắc lại khái niệm về mảng: “Mảng là một tập hợp tuần tự các phần tử có cùng kiểu dữ liệu và các phần tử được lưu trữ trong một dãy các ô nhớ liên tục trên bộ nhớ“. Các bạn đặc biệt lưu ý tới tính chất được lưu trên các ô nhớ liên tục, bây giờ chúng ta sẽ chứng minh tính đúng đắn của nó bằng ví dụ dưới đây: include int main(){ }Kết quả chạy chương trình trên: Dia chi cua mang arr = 6487552 Gia chi cua mang arr = 6487552 Dia chi cua arr[0] = 6487552 Dia chi cua arr[1] = 6487556 Dia chi cua arr[2] = 6487560 Dia chi cua arr[3] = 6487564 Dia chi cua arr[4] = 6487568 Nhận xét:
Toán tử tăng và giảm của con trỏGiống như biến thông thường, con trỏ cũng có toán tử tăng và giảm. Nhưng cách toán tử tăng/ giảm trên con trỏ làm việc như nào. include int main() { }Kết quả chạy: Dia chi cua arr[0] = 6487536 Dia chi cua arr[1] = 6487540 Dia chi cua arr[2] = 6487544 Dia chi cua arr[3] = 6487548 Dia chi cua arr[4] = 6487552 Gia tri cua con tro p = 6487536 Gia tri cua dia chi ma p dang tro den = 1 Gia tri cua con tro p = 6487540 Gia tri cua dia chi ma p dang tro den = 2 Gia tri cua con tro p = 6487548 Gia tri cua dia chi ma p dang tro den = 4 Gia tri cua con tro p = 6487544 Gia tri cua dia chi ma p dang tro den = 3 Như bạn thấy:
include int main() { }
// Gia tri cua dia chi ma p dang tro den = 1
// Gia tri cua dia chi ma p dang tro den = 6Mối quan hệ giữa con trỏ và mảng trong CTới đây chắc hẳn bạn đã hình dung được sự liên hệ giữa con trỏ và mảng, mình sẽ cùng các bạn đi tới các kết luận về con trỏ và mảng nhé. Mối quan hệ giữa con trỏ và mảng trong CVới mảng trong ảnh phía trên, ta có:
include int main() { }
0 là tương đương nhau.
include int main() { }
2 và include int main() { }
3 tương đương với include int main() { }
4.
include int main() { }
6 và include int main() { }
7 tương đương với include int main() { }
8.
include int main() { }
9 tương đương với
Dia chi cua arr[0] = 6487536
Dia chi cua arr[1] = 6487540
Dia chi cua arr[2] = 6487544
Dia chi cua arr[3] = 6487548
Dia chi cua arr[4] = 6487552 Gia tri cua con tro p = 6487536 Gia tri cua dia chi ma p dang tro den = 1 Gia tri cua con tro p = 6487540 Gia tri cua dia chi ma p dang tro den = 2 Gia tri cua con tro p = 6487548 Gia tri cua dia chi ma p dang tro den = 4 Gia tri cua con tro p = 6487544 Gia tri cua dia chi ma p dang tro den = 3 0 và Dia chi cua arr[0] = 6487536 Dia chi cua arr[1] = 6487540 Dia chi cua arr[2] = 6487544 Dia chi cua arr[3] = 6487548 Dia chi cua arr[4] = 6487552 Gia tri cua con tro p = 6487536 Gia tri cua dia chi ma p dang tro den = 1 Gia tri cua con tro p = 6487540 Gia tri cua dia chi ma p dang tro den = 2 Gia tri cua con tro p = 6487548 Gia tri cua dia chi ma p dang tro den = 4 Gia tri cua con tro p = 6487544 Gia tri cua dia chi ma p dang tro den = 3 1 tương đương với Dia chi cua arr[0] = 6487536 Dia chi cua arr[1] = 6487540 Dia chi cua arr[2] = 6487544 Dia chi cua arr[3] = 6487548 Dia chi cua arr[4] = 6487552 Gia tri cua con tro p = 6487536 Gia tri cua dia chi ma p dang tro den = 1 Gia tri cua con tro p = 6487540 Gia tri cua dia chi ma p dang tro den = 2 Gia tri cua con tro p = 6487548 Gia tri cua dia chi ma p dang tro den = 4 Gia tri cua con tro p = 6487544 Gia tri cua dia chi ma p dang tro den = 3 2. Hãy thử nhập xuất mảng theo cách mới nào: // Ví dụ mối quan hệ giữa con trỏ và mảng - Lập Trình Không Khó include
define MAX_SIZE 100int main() { }Kết quả chạy: Nhap so luong phan tu: 5 Nhap a[0] = 1 Nhap a[1] = 2 Nhap a[2] = 3 Nhap a[3] = 4 Nhap a[4] = 5 Gia tri a[0] = 1 Gia tri a[1] = 2 Gia tri a[2] = 3 Gia tri a[3] = 4 Gia tri a[4] = 5 Lưu ý: Trong hầu hết trường hợp, tên biến mảng được chuyển đổi thành 1 con trỏ. Do đó, bạn có thể sử dụng con trỏ để truy cập các phần tử của mảng. Tuy nhiên, bạn cần lưu ý con trỏ và mảng không phải là một nhé. Có 1 số trường hợp ngoại lệ, bạn xem chi tiết tại: When does array name doesn’t decay into a pointer? Ví dụ mối quan hệ giữa con trỏ và mảngBạn cũng có thể sử dụng một biến con trỏ khác để duyệt mảng, xem ví dụ bài tập tính tổng các phần tử trong mảng 1 chiều sử dụng con trỏ dưới đây: // Ví dụ mối quan hệ giữa con trỏ và mảng - Lập Trình Không Khó include
define MAX_SIZE 100int main() { }Kết quả chạy chương trình: Nhap so luong phan tu: 5 Nhap a[0] = 1 Nhap a[1] = 2 Nhap a[2] = 3 Nhap a[3] = 4 Nhap a[4] = 5 Gia tri a[0] = 1 Gia tri a[1] = 2 Gia tri a[2] = 3 Gia tri a[3] = 4 Gia tri a[4] = 5 Sum = 15 Bài viết này mình đã cùng bạn đi làm rõ mối liên hệ giữa con trỏ và mảng trong C. Giờ đây bạn có thêm 1 cách để duyệt mảng cực ngầu. Hơn hết, bạn hiểu nhiều hơn về mối quan hệ giữa con trỏ và mảng, ứng dụng của con trỏ trong mảng. Ở các bài sau chúng ta sẽ tiếp tục khám phá về con trỏ nhé. |