Null Trong C Là Gì

khóa huấn luyện Lập trình lập trình sẵn C++ khóa đào tạo lập trình C++ căn bản Con trỏ NULL trong C++ (NULL pointers)
*

Dẫn nhập

Ở bài học kinh nghiệm trước, mình đã share cho chúng ta về con TRỎ CƠ BẢN vào C++(Pointer). Một số trong những ý chủ yếu mà bạn cần nắm: con trỏ là biến đổi chứa showroom bộ nhớ, rất có thể được truy nã cập bằng phương pháp sử dụng toán tử dereference (*). Truy cập một bé trỏ rác có thể sụp đổ áp dụng của bạn.

Bạn đang xem: Null trong c là gì

Hôm nay, bọn họ sẽ cùng tìm hiểu về khái niệm Con trỏ NULL trong C++ (NULL pointers).

Nội dung

Để phát âm hiểu bài bác này tốt nhất các bạn nên có kỹ năng và kiến thức cơ bạn dạng về:

Trong bài bác ta đã cùng tìm hiểu các vấn đề:

Giá trị null và con trỏ null (Null values & null pointers)Truy cập nhỏ trỏ nullMacro NULLnullptr trong C++11

Giá trị null và nhỏ trỏ null

Tương trường đoản cú như các biến thông thường, bé trỏ ko được khởi tạo ra khi khai báo. Nếu nhỏ trỏ không được khởi tạo nên một giá trị, bọn chúng sẽ cất giá trị rác.

Ngoài địa chỉ cửa hàng vùng nhớ, gồm một cực hiếm mà nhỏ trỏ có thể giữ được, kia là quý giá null. Null là một cực hiếm đặc biệt, điều đó tức là con trỏ đó không trỏ đến địa chỉ nào cả. Con trỏ đang nắm giữ giá trị null được gọi là bé trỏ null (null pointer).

float *ptr 0 ; // ptr là một trong những con trỏ nullfloat *ptr2; // ptr2 là nhỏ trỏ rácptr2 = 0; // ptr2 là một con trỏ nullTa rất có thể sử dụng một điều kiện để khám nghiệm xem một nhỏ trỏ bao gồm null hay không:double *ptr 0 ;// bé trỏ sẽ đưa thành true nếu như nó null, và false giả dụ nó không nullif (ptr)cout Output: con trỏ null.

Chú ý: Nên khởi tạo con trỏ là null nếu nó đang chưa trỏ mang lại một địa chỉ cụ thể như thế nào khác.

Truy cập nhỏ trỏ null

Trong bài học trước, các bạn đã biết được việc truy cập một nhỏ trỏ rác vẫn dẫn đến tác dụng không xác định. Nếu truy xuất cực hiếm của nhỏ trỏ null, chương trình có thể bị đóng do hệ điều hành.

Macro NULL

Ngôn ngữ C (không nên C++) định nghĩa một macro tiền xử trí đặc biệt được call là NULL, nó có mức giá trị 0.

Xem thêm:

#define NULL 0Mặc dù đây chưa phải là một phần kỹ thuật của C++, nhưng nó hoạt động phổ biến chuyển trong đầy đủ trình biên dịch C++:

double *ptr = NULL; // ptr là 1 con trỏ nullTuy nhiên, về phương diện kỹ thuật, macro NULL chưa hẳn là kỹ thuật trong C++, vày vậy nên tránh sử dụng nó vào C++.

nullptr vào C++11

Lưu ý rằng giá trị của 0 ko phải là một trong kiểu bé trỏ, cho nên vì vậy gán 0 mang đến một con trỏ để biểu lộ rằng con trỏ là 1 trong con trỏ null là không độc nhất quán.

#include using namespace std;void doSomething(double *ptr){// ptr sẽ chuyển thành true nếu nó null, cùng false giả dụ nó ko nullif (ptr)std::cout Để giải quyết những sự việc này, C++11 trình làng một từ khóa mới mang tên nullptr. nullptr là một hằng số rvalue, giống như các trường đoản cú khóa boolean true false.

int *ptr = nullptr; // ptr là 1 trong con trỏ nulldoSomething(nullptr); // truyền nhỏ trỏ null vào hàmNgoài ra, C++11 còn định nghĩa một kiểu dữ liệu nullptr_t, nullptr_t chỉ rất có thể lưu trữ quý hiếm nullptr. Cơ mà nó hay chỉ được sử dụng trong số những trường phù hợp hiếm hoi, bạn hãy tham khảo thêm và chia sẽ trong comment bên dưới nhé.

Kết luận

Qua bài học này, chúng ta đã thay được cơ bạn dạng về bé trỏ NULL trong C++ (NULL pointers). Xem xét rằng ta phải khởi tạo con trỏ là null nếu nó đang chưa trỏ mang đến một địa chỉ cửa hàng cụ thể nào không giống nhé.

Trong bài tiếp theo, bản thân sẽ giới thiệu cho các bạn về những vụ việc xung quanh con TRỎ và MẢNG trong C++(Pointers & arrays).

Cảm ơn chúng ta đã theo dõi bài viết. Hãy để lại phản hồi hoặc góp ý của bản thân để vạc triển bài viết tốt hơn. Đừng quên “Luyện tập – thách thức – không ngại khó”.

Thảo luận

Nếu chúng ta có bất kỳ khó khăn hay vướng mắc gì về khóa học, đừng ngần ngại đặt thắc mắc trong phần BÌNH LUẬN dưới hoặc vào mục HỎI & ĐÁP trên thư viện appmobiles.info.com để nhận thấy sự hỗ trợ từ cộng đồng.