Mẹo nhỏ: Để tìm kiếm chính xác các tác phẩm của Phebinhvanhoc.com.vn, hãy search trên Google với cú pháp: "Từ khóa" + "phebinhvanhoc". (Ví dụ: tác phẩm chí phèo phebinhvanhoc). Tìm kiếm ngay
408 lượt xem

[Tự học C] Tìm hiểu về con trỏ NUll(Null pointers) trong C Cafedev.vn

Bạn đang quan tâm đến [Tự học C] Tìm hiểu về con trỏ NUll(Null pointers) trong C Cafedev.vn phải không? Nào hãy cùng PHE BINH VAN HOC theo dõi bài viết này ngay sau đây nhé!

Video đầy đủ [Tự học C] Tìm hiểu về con trỏ NUll(Null pointers) trong C Cafedev.vn

1. giá trị null và con trỏ null (giá trị null và con trỏ null)

Cũng giống như các biến bình thường, con trỏ không được khởi tạo khi khởi tạo. trừ khi một giá trị được chỉ định, con trỏ sẽ trỏ đến một số địa chỉ rác theo mặc định.

Ngoài địa chỉ bộ nhớ, có một giá trị khác mà con trỏ có thể giữ: null. null là một giá trị đặc biệt, có nghĩa là con trỏ không trỏ đến bất kỳ thứ gì. con trỏ chứa giá trị null được gọi là con trỏ null.

Trong c ++, chúng ta có thể gán giá trị null cho một con trỏ bằng cách khởi tạo nó hoặc đặt nó thành 0.

con trỏ sẽ được chuyển đổi thành boolean false nếu chúng là null và boolean true nếu không. thì chúng ta có thể sử dụng câu lệnh kiểm tra có điều kiện để kiểm tra xem một con trỏ có rỗng hay không:

phương pháp hay: khởi tạo con trỏ thành null nếu bạn không gán giá trị cho chúng.

2. tham chiếu đến một con trỏ null

Trong bài trước, chúng ta đã biết rằng việc bỏ tham chiếu con trỏ rác dẫn đến kết quả không xác định. tham chiếu đến một con trỏ null cũng sẽ dẫn đến hành vi không xác định. trong hầu hết các trường hợp, nó sẽ làm hỏng ứng dụng của bạn.

Về mặt khái niệm, điều này thực sự có ý nghĩa. tham chiếu đến một con trỏ có nghĩa là “đi đến địa chỉ mà con trỏ trỏ đến và truy cập giá trị ở đó”. và một con trỏ null chứa địa chỉ mà nó chứa. vì vậy hãy nghĩ về nó, khi bạn cố gắng truy cập giá trị tại địa chỉ đó, con trỏ phải làm gì?

XEM THÊM:  Hướng dẫn, thủ thuật về Android

3. macro null

giải thích macro là gì: macro là một đoạn mã được đặt tên. mỗi khi tên này được sử dụng, nó sẽ được thay thế bằng nội dung của macro. có hai loại macro. chúng khác nhau chủ yếu ở cách chúng được sử dụng. macro giống đối tượng giống như đối tượng dữ liệu khi được sử dụng, macro giống hàm giống như lệnh gọi hàm.

Quay lại với con trỏ, lưu ý rằng giá trị 0 không phải là kiểu dữ liệu con trỏ, vì vậy việc gán 0 (hoặc null, trước c ++ 11) cho một con trỏ chỉ ra rằng nó là một con trỏ null thứ cấp dường như gây ra mâu thuẫn. trong một số trường hợp hiếm hoi, khi được sử dụng như một đối số theo nghĩa đen, nó thậm chí có thể gây ra sự cố vì trình biên dịch không thể tìm ra nếu chúng ta đang nói về một con trỏ null hay một số nguyên 0.

Trong trường hợp không chắc chắn rằng null được xác định là giá trị 0, thực hiện print (null) về cơ bản sẽ gọi print (int), không phải print (int *) như bạn mong đợi đối với một con trỏ null thực sự.

4. điểm null trong c ++ 11

Để giải quyết vấn đề trên, c ++ 11 đã giới thiệu một từ khóa mới gọi là nullptr. nullptr vừa là từ khóa vừa là giá trị thực, giống như từ khóa boolean true và false.

XEM THÊM:  Tư vấn tiếng Anh là gì?

Kể từ c ++ 11, nullptr sẽ được ưu tiên hơn 0 khi chúng ta muốn một con trỏ null:

c ++ sẽ chuyển đổi ngầm định nullptr thành bất kỳ kiểu dữ liệu con trỏ nào. do đó, trong ví dụ trên, nullptr đã được chuyển đổi hoàn toàn thành một con trỏ số nguyên, và sau đó giá trị của nullptr được gán cho ptr. điều này có tác dụng chuyển đổi con trỏ số nguyên ptr thành con trỏ null.

Chúng ta cũng có thể gọi một hàm với từ khóa nullptr làm đối số, đối số này sẽ khớp với bất kỳ đối số nào được truyền vào hàm nhận giá trị con trỏ:

phương pháp hay: với c ++ 11, hãy sử dụng từ khóa nullptr để khởi tạo con trỏ thành giá trị null.

5. std :: nullptr_t trong c ++ 11

c ++ 11 cũng giới thiệu một kiểu dữ liệu mới được gọi là std :: nullptr_t (trong tiêu đề & lt; cstddef & gt;). std :: nullptr_t chỉ có thể giữ một giá trị: đó là nullptr! Mặc dù điều này có vẻ hơi ngớ ngẩn nhưng nó rất hữu ích trong một số trường hợp. Nếu chúng ta muốn viết một hàm chỉ nhận đối số nullptr thì chúng ta phải đặt kiểu dữ liệu nào cho đối số của hàm? phản hồi chính là std :: nullptr_t.

Có thể bạn sẽ không bao giờ cần sử dụng nó, nhưng không bao giờ là điều tồi tệ khi học một điều gì đó mới!

Như vậy trên đây chúng tôi đã giới thiệu đến bạn đọc [Tự học C] Tìm hiểu về con trỏ NUll(Null pointers) trong C Cafedev.vn. Hy vọng bài viết này giúp ích cho bạn trong cuộc sống cũng như trong học tập thường ngày. Chúng tôi xin tạm dừng bài viết này tại đây.

Website: https://phebinhvanhoc.com.vn/

Thông báo: Phê Bình Văn Học ngoài phục vụ bạn đọc ở Việt Nam chúng tôi còn có kênh tiếng anh PhebinhvanhocEN cho bạn đọc trên toàn thế giới, mời thính giả đón xem.

Chúng tôi Xin cám ơn!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *