C Pointers & Arrays

C Pointers & Arrays: Hiểu Biết Cơ Bản

Ngôn ngữ lập trình C cung cấp cho lập trình viên khả năng quản lý bộ nhớ một cách hiệu quả thông qua các con trỏ (pointers) và mảng (arrays). Trong bài viết này, chúng ta sẽ cùng khám phá định nghĩa, cú pháp và các ví dụ cụ thể để hiểu rõ hơn về hai khái niệm này.

1. Định Nghĩa

Con trỏ (Pointer): Là một biến lưu trữ địa chỉ của biến khác trong bộ nhớ. Con trỏ cho phép lập trình viên truy cập và thao tác trực tiếp vào bộ nhớ, từ đó có thể tạo ra các cấu trúc dữ liệu phức tạp.

Mảng (Array): Là một tập hợp của các phần tử cùng loại, được lưu trữ liên tiếp trong bộ nhớ. Mảng cho phép lưu trữ nhiều giá trị trong một biến duy nhất và có thể truy cập các giá trị này thông qua chỉ số.

2. Cú Pháp

Cú pháp khai báo con trỏ:
type *pointer_name;

Cú pháp khai báo mảng:
type array_name[array_size];

3. Ví Dụ Về Con Trỏ và Mảng

Ví dụ 1: Sử dụng con trỏ

#include <stdio.h>

int main() {
    int var = 20;        // Khai báo một biến nguyên
    int *ptr;           // Khai báo một con trỏ

    ptr = &var;         // Gán địa chỉ của var cho ptr

    printf("Giá trị của var: %d\n", var);
    printf("Địa chỉ của var: %p\n", (void*)&var);
    printf("Địa chỉ mà ptr đang trỏ đến: %p\n", (void*)ptr);
    printf("Giá trị mà ptr đang trỏ đến: %d\n", *ptr);

    return 0;
}

Giải thích:

Trong ví dụ này, chúng ta khai báo một biến var và một con trỏ ptr. Con trỏ ptr được gán địa chỉ của biến var. Bằng cách sử dụng toán tử dereference (*ptr), chúng ta có thể truy cập giá trị của var thông qua con trỏ.

Ví dụ 2: Sử dụng mảng

#include <stdio.h>

int main() {
    int arr[5] = {10, 20, 30, 40, 50}; // Khai báo và khởi tạo mảng
    int i;

    printf("Các phần tử trong mảng là:\n");
    for(i = 0; i < 5; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }

    return 0;
}

Giải thích:

Trong ví dụ này, chúng ta khai báo một mảng arr với 5 phần tử. Chúng ta sử dụng vòng lặp để in từng phần tử trong mảng.

Kết Luận

Con trỏ và mảng là những khái niệm quan trọng trong ngôn ngữ lập trình C, giúp lập trình viên quản lý bộ nhớ một cách hiệu quả và linh hoạt. Hy vọng qua bài viết này, bạn đã có cái nhìn tổng quát về cách sử dụng chúng trong lập trình.