Con Trỏ Null Là Gì Trong C Ó Ý Nghĩa Như Thế Nào, Con Trỏ Null Trong C/C++

 - 

MyType x = __null;Tôi đã tra cứu vãn nó và thấy rằng __null được Call là "tự khóa trình biên dịch", mà tôi trả sử Tức là nó được áp dụng nội bộ mang đến trình biên dịch. Tôi không hiểu nhiều tại sao NetBeans đề nghị chuyển đổi nó thành một tự khóa trình biên dịch.

Bạn đang xem: Con trỏ null là gì trong c Ó Ý nghĩa như thế nào, con trỏ null trong c/c++

Sự khác hoàn toàn giữa NULL cùng __null vào c ++ là gì?


__null là 1 g++ lắp thêm bên phía trong có thuộc mục tiêu cùng với tiêu chuẩn chỉnh nullptr được thêm vào trong C++ 11 (chuyển động đồng hóa như một con trỏ, ko khi nào là số nguyên).

NULL được khái niệm là 0, có thể được sử dụng ngầm là số nguyên, boolean, quý giá vệt phẩy rượu cồn hoặc con trỏ, là một vấn đề Khi kể đến độ phân giải quá sở hữu, khi bạn có nhu cầu Hotline hàm mất một bé trỏ ví dụ.

Trong hầu như trường đúng theo, các bạn không nên áp dụng __null vị đó là cụ thể triển khai g++, bởi vì vậy thực hiện nó bảo đảm mã không cầm tay. Nếu chúng ta có thể phụ thuộc C++ 11 (chắc chắn là chúng ta cũng có thể mang lại bây giờ?), Hãy sử dụng nullptr. Nếu không, NULL là tùy lựa chọn di động duy nhất của người tiêu dùng.


53
28 thg 12, 2018ShadowRanger
NULL đã được chuyển từ C thành C++ và - trước C++ 11 - đã trải qua chân thành và ý nghĩa C của nó:

cho đến C++ 11: Macro NULL là hằng số nhỏ trỏ null được xác định tiến hành, có thể là 1 quý giá biểu thức hằng hằng tích phân của phong cách số ngulặng reviews bằng ko.

Xem thêm: 1940 Mệnh Gì - Xem Tử Vi Tuổi Canh Thìn Nữ Mạng Sinh Năm 1940

C++ 11 tiếp đến vẫn trình làng một con trỏ null chuyên được sự dụng theo nghĩa Black nullptr nằm trong nhiều loại std::nullptr_t. Nhưng - chắc hẳn rằng để tương thích ngược - macro NULL không xẩy ra xóa; tư tưởng của nó chỉ là 1 trong những chút ít dễ chịu trong các trình biên dịch hiện giờ có thể định nghĩa nó là tích phân Hay là hình trạng nhỏ trỏ:

C++ 11 trsinh hoạt đi: một trong những nguyên ổn có mức giá trị bằng 0 hoặc giá trị của mẫu mã std :: nullptr_t

Nếu các bạn thực hiện NULL, thì các bạn sẽ có hành vi được xác định theo thực hiện nghỉ ngơi độ sắc nét quá thiết lập. Ví dụ, hãy chăm chú đoạn mã sau với trình biên dịch sử dụng phiên bạn dạng tích phân của NULL- macro. Sau kia, một cuộc Call áp dụng NULL có tác dụng tham số được truyền mang đến hàm hoàn toàn có thể dẫn đến sự mơ hồ:

struct SomeOverload { SomeOverload(int x) { cout Vì vậy, đề xuất áp dụng nullptr bất kể khi nào bạn muốn diễn tả các loại con trỏ.

Và không áp dụng __null, vì chưng đấy là hằng số giành cho trình biên dịch, ko di động; nullptr, trở lại, hoàn toàn cầm tay.


11
NULL là ký hiệu C cũ đến bé trỏ null. Theo truyền thống lịch sử, C++ đang áp dụng 0 cho những con trỏ null và Tính từ lúc tiêu chuẩn chỉnh C++ 11 nullptr.

Xem xét rằng x dường như không hẳn là một trong nhỏ trỏ thì bạn cần yếu khởi chế tác x thành một nhỏ trỏ null và hình tượng __null có lẽ là 1 hình tượng phía bên trong trình biên dịch mang lại null value (là 1 trong những quan niệm không thực thụ sống thọ trong C++ tiêu chuẩn).

Xem thêm: Soot Là Gì - Nghĩa Của Từ Soot

Nếu bạn muốn x được khởi sản xuất nghỉ ngơi một trong những tâm trạng mang định, thì bạn đề xuất nhờ vào hàm chế tạo ra khoác định MyClass để khởi tạo những đối tượng người tiêu dùng với các biến thành viên của nó thành một vài quý giá mang định phù hợp.