Làm thế nào để Kiểm tra Null trong C: 7 Bước (với Hình ảnh)

Mục lục:

Làm thế nào để Kiểm tra Null trong C: 7 Bước (với Hình ảnh)
Làm thế nào để Kiểm tra Null trong C: 7 Bước (với Hình ảnh)

Video: Làm thế nào để Kiểm tra Null trong C: 7 Bước (với Hình ảnh)

Video: Làm thế nào để Kiểm tra Null trong C: 7 Bước (với Hình ảnh)
Video: Các thao tác cơ bản với GIMP bạn nên biết - Phần mềm chỉnh sửa ảnh thay thế Photoshop tuyệt vời 2024, Có thể
Anonim

Trong C, NULL là một hằng số tượng trưng luôn trỏ đến một điểm không tồn tại trong bộ nhớ. Mặc dù nhiều lập trình viên coi nó bằng 0, nhưng đây là một sự đơn giản hóa có thể giúp bạn cải thiện sau này. Tốt nhất là kiểm tra trực tiếp con trỏ của bạn so với NULL và sử dụng 0 trong các ngữ cảnh khác. Điều này giúp mã của bạn sạch sẽ và dễ hiểu, vì bạn sẽ biết mình đang làm việc với con trỏ mỗi khi bạn thấy NULL.

Các bước

Phần 1/2: Thực hiện Kiểm tra Null

Kiểm tra Null trong C Bước 1
Kiểm tra Null trong C Bước 1

Bước 1. Sử dụng mã kiểm tra null tiêu chuẩn

Sau đây là cách rõ ràng nhất để viết kiểm tra null. Chúng tôi sẽ sử dụng ptr trong bài viết này là tên của con trỏ bạn đang kiểm tra.

  • nếu (ptr == NULL)

    {

    // mã nếu con trỏ là NULL

    } khác {

    // mã nếu không phải NULL

    }

Kiểm tra Null trong C Bước 2
Kiểm tra Null trong C Bước 2

Bước 2. Kiểm tra bất kỳ giá trị nào trừ giá trị NULL

Đôi khi thay vào đó, việc kiểm tra sự bất bình đẳng sẽ thuận tiện hơn. Không có gì ngạc nhiên ở đây:

  • if (ptr! = NULL) {

    // mã nếu không phải NULL

    }

Kiểm tra Null trong C Bước 3
Kiểm tra Null trong C Bước 3

Bước 3. Viết NULL trước để tránh lỗi (tùy chọn)

Nhược điểm chính đối với phương thức PTR == NULL là khả năng bạn sẽ vô tình nhập ptr = NULL thay vào đó, gán giá trị NULL cho con trỏ đó. Điều này có thể gây ra một cơn đau đầu lớn. Vì kiểm tra đẳng thức (trong) xử lý các toán hạng một cách đối xứng, bạn có thể nhận được chính xác cùng một kết quả bằng cách viết nếu (NULL == ptr) thay thế. Điều này có khả năng chống lỗi đánh máy cao hơn, vì NULL = ptr tình cờ tạo ra một lỗi biên dịch đơn giản.

Điều này có vẻ hơi khó xử đối với một số lập trình viên, nhưng nó hoàn toàn hợp lệ. Cách tiếp cận bạn sử dụng chỉ phụ thuộc vào sở thích cá nhân và trình biên dịch của bạn phát hiện lỗi if (ptr = NULL) tốt như thế nào

Kiểm tra Null trong C Bước 4
Kiểm tra Null trong C Bước 4

Bước 4. Kiểm tra xem biến có đúng không

Một đơn giản nếu (ptr) kiểm tra xem ptr là TRUE. Nó sẽ trả về FALSE nếu ptr là NULL hoặc nếu ptr là 0. Trong nhiều trường hợp, sự khác biệt không quan trọng, nhưng hãy lưu ý rằng chúng không giống nhau trong tất cả các kiến trúc.

Mặt trái của điều này là nếu (! ptr), sẽ trả về TRUE nếu ptr là FALSE.

Phần 2 của 2: Tránh sai lầm

Kiểm tra Null trong C Bước 5
Kiểm tra Null trong C Bước 5

Bước 1. Đặt một con trỏ trước khi kiểm tra NULL

Một sai lầm phổ biến là giả định rằng một con trỏ mới được tạo có giá trị NULL. Đây không phải là sự thật. Một con trỏ chưa được gán vẫn trỏ đến một địa chỉ bộ nhớ, chỉ không phải là địa chỉ mà bạn đã chỉ định. Thông thường, bạn nên đặt các con trỏ mới được tạo hoặc mới được giải phóng thành NULL để đảm bảo rằng bạn không vô tình sử dụng địa chỉ không hữu ích này.

  • Tránh sai lầm này:

    char * ptr;

    nếu (ptr == NULL)

    {

    // Điều này sẽ trả về FALSE. Con trỏ đã được gán một giá trị hợp lệ.

    }

  • Thay vào đó hãy viết:

    char * ptr = NULL; // Điều này chỉ định con trỏ cho NULL

    nếu (ptr == NULL)

    {

    // Điều này sẽ trả về TRUE nếu con trỏ chưa được gán lại.

    }

Kiểm tra Null trong C Bước 6
Kiểm tra Null trong C Bước 6

Bước 2. Chú ý đến các hàm có thể trả về NULL

Nếu một hàm có thể trả về NULL, hãy nghĩ xem đây có phải là khả năng xảy ra hay không và liệu điều đó có gây ra sự cố sau này trong mã của bạn hay không. Đây là một ví dụ về hàm malloc sử dụng kiểm tra null (nếu (ptr)) để đảm bảo nó chỉ xử lý các con trỏ có giá trị hợp lệ:

  • int * ptr = malloc (N * sizeof (int));

    nếu (ptr) {

    int i;

    cho (i = 0; i <N; ++ i)

    ptr = i;

    }

Kiểm tra Null trong C Bước 7
Kiểm tra Null trong C Bước 7

Bước 3. Hiểu rằng NULL là 0 nhưng bạn nên luôn sử dụng NULL thay vì 0 khi làm việc với con trỏ cho rõ ràng

Trong lịch sử, C đại diện cho NULL là số 0 (nghĩa là 0x00). Ngày nay, nó có thể phức tạp hơn một chút và thay đổi theo hệ điều hành. Bạn thường có thể kiểm tra NULL bằng cách sử dụng ptr == 0, nhưng có những trường hợp góc mà điều này có thể gây ra sự cố. Có lẽ quan trọng hơn, việc sử dụng NULL giúp hiển nhiên rằng bạn đang làm việc với các con trỏ để người khác đọc mã của bạn.

Lời khuyên

Bạn có thể sử dụng vòng lặp đăng ký while này giống như bất kỳ vòng lặp nào khác: trong khi (NULL == ptr) {

Đề xuất: