Tag Archive | pointer

Nói về con trỏ [P. cuối]

Các bài viết trong loạt bài “Nói về con trỏ”

Kết thúc phần 1, mình đã trình bày những thứ cơ bản về con trỏ trong C và theo mình thì nhiêu đó cũng đủ để sử dụng rồi. Ở phần 2 này, mình sẽ tiếp tục về con trỏ trong C++. Tuy nhiên, ở phần này, mình chỉ nêu ra một số điểm khác biệt giữa con trỏ trong C++ và C mà không trình bày chi tiết nữa.

Về bố cục, ở phần này sẽ phân chia giống ở phần 1 để bạn tiện theo dõi và so sánh.

Nếu bạn chưa đọc phần 1 hay vẫn còn điểm gì chưa rõ, hãy quay lại ngâm cứu phần 1 một chút, vì đó là những kiến thức cơ bản và sẽ được sử dụng lại trong phần này.

Và nếu bạn đã sẵn sàng, còn chờ gì nữa, bắt đầu nào.

Read More…

Nói về con trỏ [P. 4]

Các bài viết trong loạt bài “Nói về con trỏ”

Ở phần cuối bài viết trước, có một câu hỏi về mảng động, bạn còn nhớ không nào. Đương nhiên là câu trả lời sẽ nằm trong bài viết này nhưng không phải ngay bây giờ, bạn từ từ khám phá nhé.

1.3. Con trỏ và thủ tục, hàm

Truyền tham chiếu

Nhắc đến con trỏ và thủ tục, hàm, bạn thường liên tưởng ngay đến việc truyền tham số và một ví dụ kinh điển đó là hoán vị giá trị của 2 số. Hãy bắt đầu từ sai lầm:

Read More…

Nói về con trỏ [P. 3]

Các bài viết trong loạt bài “Nói về con trỏ”

Mảng 2 chiều

Trước khi bắt đầu mới khai báo mảng 2 chiều (hay còn gọi là ma trận) bằng con trỏ, cũng nên nhắc lại một chút về cách khai báo truyền thống chứ nhỉ

int a[10][10];

Ngắn gọn và dễ hiểu phải không nào?

Thế còn khai báo bằng con trỏ thì thế nào nhỉ? Thế này đây:

int **a;

Nhìn qua thì có vẻ ngắn gọn nhưng có gọn thật không thì hãy chờ đã.

Read More…

Nói về con trỏ [P. 2]

Các bài viết trong loạt bài “Nói về con trỏ”

1.2. Khai báo mảng động

Mảng 1 chiều

Trước khi đi tiếp, hãy kiểm tra lại chút kiến thức nhé. Thế mảng động là gì nhỉ?

Chắc phần lớn câu trả lời sẽ là mảng khai báo sau khi biết kích thước.

Vậy xem thử cái này nhé:

#include <stdio.h>

int main()
{
    int n;

    printf("Enter n: ");
    scanf("%d", &n);

    int a[n];

    for (int i = 0; i < n; i++)
        a[i] = i;
    for (int i = 0; i < n; i++)
        printf("%5d", a[i]);

    return 0;
}

Read More…

Nói về con trỏ [P. 1]

Các bài viết trong loạt bài “Nói về con trỏ”

Dạo này cứ C rồi C++, nhảy qua nhảy lại chóng mặt luôn. Lại đụng đến con trỏ, một vấn đề không khó để hiểu nhưng lại không dễ để kiểm soát hoàn toàn. Thế nên nghiên cứu, viết loạt bài này để nắm rõ vấn đề hơn, cũng như là tài liệu tham khảo cho bạn nào cũng đang gặp vướng mắt này.

Bài viết này sẽ gồm 2 phần. Phần 1 là con trỏ trong C và phần 2 là con trỏ trong C++. Lý do chia làm 2 phần này vì trước mắt thấy sử dụng con trỏ trong C và C++ có chút khác biệt nên chia làm 2 phần cho rõ ràng.

Loạt bài viết này chỉ tập trung vào việc sử dụng con trỏ trong C, C++, không trình bày sâu về cách tổ chức dữ liệu bên dưới bộ nhớ.

Read More…