Tài liệu học lập trình c cho người khiếm thị
  • 1. LỜI NÓI ĐẦU
    • Lời nói đầu
  • 2. BÀI HỌC LÝ THUYẾT
    • Bài 1. Giới thiệu về ngôn ngữ lập trình C
    • Bài 2. Cài đặt môi trường và viết chương trình đầu tiên
    • Bài 3. Biến và kiểu dữ liệu
    • Bài 4. Toán tử và biểu thức
    • Bài 5. Nhập và xuất trong C
    • Bài 6. Câu lệnh điều kiện rẽ nhánh
    • Bài 7. Vòng lặp
    • Bài 8. Mảng
    • Bài 9. Con trỏ
    • Bài 10. Hàm
    • Bài 11. Chuỗi
    • Bài 12. Các kiểu dữ liệu nâng cao và thuật toán sắp xếp
    • Bài 13. Quản lý tập tin
  • Bài tập nhỏ
    • Bài tập 1: Biến và kiểu dữ liệu
    • Bài tập 2: Toán tử và biểu thức
    • Bài tập 3: Nhập và xuất trong C
    • Bài tập 4: Câu lệnh điều kiện
    • Bài tập 5: Vòng lặp
    • Bài tập 6: Mảng
    • Bài tập 7: Con trỏ
    • Bài tập 8: Hàm
    • Bài tập 9: Chuỗi
    • Bài tập 10: Dữ liệu nâng cao và sắp xếp
    • Bài tập 11: Quản lý tập tin
  • Bài tập lớn
    • Bài tập 1: Quản lý sinh viên
    • Bài tập 2: Phần mềm quản lý thư viện
    • Bài tập 3: Chương trình quản lý danh bạ
  • 4. VÍ DỤ MINH HỌA
    • Ví dụ 1: Chương trình Hello World
    • Ví dụ 2: Máy tính đơn giản
    • Ví dụ 3: Kiểm tra số nguyên tố
    • Ví dụ 4: Đọc và ghi file trong C
    • Ví dụ 5: Sử dụng con trỏ trong C
    • Ví dụ 6: Quản lý sinh viên sử dụng struct
    • Ví dụ 7: Sắp xếp mảng bằng thuật toán Bubble Sort
    • Ví dụ 8: Đọc ghi file CSV
    • Ví dụ 9: Duyệt mảng bằng con trỏ
    • Ví dụ 10: Quản lý bộ nhớ động
    • Ví dụ 11: Sử dụng vòng lặp để xử lý dữ liệu
    • Ví dụ 12: Xử lý chuỗi bằng thư viện string.h
    • Ví dụ 13: Cấu trúc dữ liệu nâng cao
  • 5. PHỤ LỤC
    • phần I. Các hàm chuẩn trong thư viện C
    • phần II. Cấu trúc dữ liệu trong C
    • Phần III: Thuật toán cơ bản
    • Phần IV: Thuật ngữ lập trình
  • 6. THÔNG TIN TÀI LIỆU
    • thông tin tài liệu
Powered by GitBook
On this page
  • I: Mục tiêu bài học
  • II: Nội dung bài học
  • 1. Khái niệm về con trỏ
  • 2. Khởi tạo và sử dụng con trỏ
  • 3. Con trỏ và mảng
  • 4. Con trỏ và chuỗi ký tự
  • 5. Con trỏ NULL và con trỏ void
  • III: Lưu ý dành cho người khiếm thị
  • IV: Tóm tắt bài học
  1. 2. BÀI HỌC LÝ THUYẾT

Bài 9. Con trỏ

I: Mục tiêu bài học

Sau khi hoàn thành bài học này, người học sẽ:

  • Hiểu khái niệm con trỏ và vai trò của nó trong ngôn ngữ lập trình C.

  • Biết cách khai báo, khởi tạo và sử dụng con trỏ.

  • Thực hành truy xuất giá trị thông qua con trỏ.

  • Hiểu cách con trỏ hoạt động với mảng và chuỗi ký tự.

  • Biết cách áp dụng con trỏ trong lập trình để tối ưu bộ nhớ và tăng hiệu suất chương trình.

II: Nội dung bài học

1. Khái niệm về con trỏ

Con trỏ (pointer) là một biến đặc biệt dùng để lưu trữ địa chỉ của một biến khác trong bộ nhớ. Thay vì lưu trữ trực tiếp giá trị, con trỏ giúp truy xuất và thay đổi dữ liệu gián tiếp thông qua địa chỉ bộ nhớ.

Cú pháp khai báo một con trỏ:

int *ptr;

Ở đây, ptr là một con trỏ kiểu int, có thể lưu trữ địa chỉ của một biến kiểu int.

2. Khởi tạo và sử dụng con trỏ

Một con trỏ cần được gán địa chỉ của một biến hợp lệ trước khi sử dụng:

int a = 10;
int *ptr = &a; // Gán địa chỉ của biến a cho con trỏ ptr
  • &a là toán tử lấy địa chỉ của biến a.

  • ptr chứa địa chỉ của a, có thể truy xuất giá trị bằng *ptr.

Ví dụ:

#include <stdio.h>
int main() {
    int a = 10;
    int *ptr = &a;
    printf("Giá trị của a: %d\n", *ptr);
    return 0;
}

3. Con trỏ và mảng

Trong C, tên mảng thực chất là địa chỉ của phần tử đầu tiên, nên có thể dùng con trỏ để duyệt mảng.

int arr[3] = {1, 2, 3};
int *p = arr;
printf("Giá trị đầu tiên: %d\n", *p);

Dùng con trỏ để duyệt mảng:

for (int i = 0; i < 3; i++) {
    printf("%d ", *(p + i));
}

4. Con trỏ và chuỗi ký tự

Con trỏ có thể thao tác trực tiếp trên chuỗi ký tự:

char str[] = "Hello";
char *p = str;
printf("Chuỗi: %s\n", p);

5. Con trỏ NULL và con trỏ void

  • Con trỏ NULL không trỏ đến vùng nhớ hợp lệ, tránh lỗi truy xuất ngoài bộ nhớ.

int *ptr = NULL;
  • Con trỏ void * có thể trỏ đến bất kỳ kiểu dữ liệu nào.

void *p;
int a = 5;
p = &a;

III: Lưu ý dành cho người khiếm thị

  • Khi làm việc với con trỏ, cần nhớ địa chỉ và giá trị không giống nhau.

  • Khi dùng trình đọc màn hình, hãy thử in giá trị con trỏ và giá trị nó trỏ đến để hiểu rõ.

  • Tránh truy xuất con trỏ NULL để tránh lỗi chương trình.

IV: Tóm tắt bài học

  • Con trỏ là biến lưu trữ địa chỉ của biến khác.

  • Dùng * để truy xuất giá trị, & để lấy địa chỉ.

  • Con trỏ có thể thao tác trên mảng và chuỗi ký tự.

  • Tránh dùng con trỏ NULL và đảm bảo con trỏ được khởi tạo trước khi sử dụng.

Bài tiếp theo: Chúng ta sẽ tìm hiểu về hàm trong C, giúp chương trình tổ chức logic hơn và tái sử dụng mã nguồn hiệu quả.

PreviousBài 8. MảngNextBài 10. Hàm

Last updated 2 months ago