Con trỏ trong C là gì? Giới thiệu khái niệm và nội dung cơ bản

Con trỏ trong C là một khái niệm rất quen thuộc so với những nhà lập trình viên. Tuy cơ bản nhưng nghành kỹ năng và kiến thức mà con trỏ trong C + + tương quan là rất rộng. Người dùng cần nắm vững những thông tin quan trọng này để hoàn toàn có thể sử dụng một cách thuần thục con trỏ C. Bài viết sau sẽ đề cập đến khái niệm của con trỏ C, cách sử dụng và màn biểu diễn nó trong ngôn từ lập trình như thế nào. Hãy theo dõi ngay !

Tìm hiểu địa chỉ ô nhớ trong C

Trước khi khám phá khái niệm con trỏ trong C, ta sẽ điểm qua một vài thông tin của địa chỉ biến nhớ trước. Đầu tiên ta sẽ nhìn qua ví dụ sau :int number ;

printf(“\nNhap number = “);

scanf ( “ % d ”, và number ) ;printf ( “ \ nnumber = % d ”, number ) ;Bạn hoàn toàn có thể thấy rằng khi dùng hàm scanf, để truyền biến number ta cần dùng dấu và. Còn so với hàm printf thì lại không cần. Lý do ở đây là gì ? Câu vấn đáp là vì scanf cần giá trị của biến, cho nên vì thế dấu và sẽ giúp nó xác định được địa chỉ của biến đó .Mảng con trỏ C++Từ đó ta rút ra được Kết luận : Mỗi biến đều được đính kèm địa chỉ của nó và giá trị nó đang tàng trữ. Để xác lập được địa chỉ của biến, ta chỉ cần thêm dấu và đằng trước nó .Ví dụ thực hành thực tế : Khi chạy đoạn mã sau :

#include

int main ( ){int number = 5 ;printf ( “ Gia tri cua number = % d ”, number ) ;/ / truy xuất địa chỉ bằng cách thêm và trước tên biếnprintf ( “ \ nDia chi cua number = % d ”, và number ) ;return 0 ;}Thì ta sẽ nhận được tác dụng trả về là :Gia tri cua number = 5Dia chi cua number = 6487580Chú ý rằng tác dụng ở mỗi máy hoàn toàn có thể khác nhau do thông số kỹ thuật không giống nhau. Nếu bạn muốn nhận địa chỉ là hexa như đầu bài, hãy sửa chữa thay thế % d bằng % x .

Con trỏ trong C là gì ?

Quay trở lại với khái niệm của con trỏ trong C. Con trỏ C cũng là một dạng biến có địa chỉ và giá trị đi kèm. Nhưng pointer ( con trỏ C ) là một biến đặc biệt quan trọng, nó không tàng trữ những giá trị thường thì. Biến của con trỏ sẽ trỏ đến một địa chỉ của biến khác. Chính do đó giá trị của nó ở trong dạng một địa chỉ .Vậy là trong con trỏ C sẽ tàng trữ 2 địa chỉ khác nhau : địa chỉ của con trỏ là vị trí của nó nhưng giá trị của nó lại là địa chỉ của biến mà nó đang trỏ tới. Ngoài ra, nhờ năng lực tàng trữ địa chỉ đặc biệt quan trọng của con trỏ C, nó được cho phép người dùng trỏ đến một điểm bất kể trong bộ nhớ. Nếu nắm chắc cách sử dụng pointer, bạn sẽ cảm thấy đây là một điểm mạnh tuyệt vời của nó. Nhưng nếu ngược lại, vì thực trạng trỏ lung tung của pointer, người dùng không hề giải quyết và xử lý sẽ cho đây là một điểm yếu phiền phức .

Những nội dung tương quan đến con trỏ C + +

Cách khai báo con trỏ

Cách khai báo con trỏ C cũng giống như những biến thông thường khác, gồm có kiểu tài liệu và tên biến được ngăn cách ở giữa bới dấu *. Điều kiện là định danh tên biến phải hợp lệ. Cú pháp mẫu khi khai báo con trỏ như sau :

*

hoặc

*

hay

*

Ví dụ về con trỏ trong CCả 3 kiểu khai báo như thế này đều đúng .Có nhiều kiểu tài liệu khác nhau, hoàn toàn có thể là void, int, float hay double … đều được. Tác dụng của dấu * là cho trình biên dịch biết đằng sau nó là một biến được khai báo dạng con trỏ. Dưới đây là một số ít ví dụ về cú pháp đơn cử của những loại khai báo trỏ biến khác nhau :

  • Trường hợp khai báo con trỏ để trỏ tới biến kiểu nguyên: int *p_i;
  • Trường hợp khai báo con trỏ C++ kiểu int, biến val (không phải con trỏ) cũng kiểu int: int *p, val;
  • Trường hợp khai báo con trỏ để trỏ tới biến kiểu thực: float *p_f;
  • Trường hợp khai báo con trỏ để trỏ tới biến kiểu ký tự: char *p_char;
  • Trường hợp khai báo con trỏ kiểu void (không kiểu): void *p_v;

Gán địa chỉ vào con trỏ trong C

Bạn chỉ nên gán địa chỉ cho con trỏ sau khi đã khai báo nó thành công xuất sắc. Nếu chưa khai báo mà bạn đã gán giá trị thì con trỏ đó sẽ tương tự như một biến rác, hoàn toàn có thể làm lỗi mạng lưới hệ thống khi khởi chạy. Phiền phức hơn, nếu con trỏ đó bị trỏ đến một biến quan trọng, nó sẽ làm đảo lộn hàng loạt ứng dụng của bạn .Có 2 trường hợp để bạn gán địa chỉ cho con trỏ trong C :

  • Gán địa chỉ sau khi đã khai báo: Trong ví dụ dưới đây, giá trị được gán cho p là địa chỉ của value.

int * p, value ;value = 5 ;p = và value

  • Khai báo và gán địa chỉ đồng thời: Trong ví dụ dưới, hoạt động khai báo và gán giá trị cho p là địa chỉ của value được thực hiện cùng lúc.

int value = 5 ;int * p = và valueLưu ý rằng hoạt động giải trí khởi tạo và gán địa chỉ nên được thực thi cùng nhau. Nếu con trỏ bạn định khởi tạo là dạng void, nó hoàn toàn có thể được trỏ tới bất kể địa chỉ của bất kể biến hay kiểu tài liệu nào. Nếu bạn đã khai báo con trỏ rồi nhưng vẫn chưa biết gắn vào địa chỉ nào thì hay trỏ nó đến NULL bằng cú pháp int * p = NULL. Khi đó con trỏ sẽ vô hại với giá trị bằng 0 .Cấu tạo của con trỏ C

Mối quan hệ giữa con trỏ và mảng động trong C + +

Biến con trỏ và mảng động trong C + + có một mối liên hệ rất lớn. Trước hết ta sẽ đi nhanh về những định nghĩa cơ bản. Biến động còn được gọi là biến cấp phát động. Nó được hiểu như một kiểu tài liệu dùng để định nghĩa. Nó không có tên mà cũng không được khai báo trong vùng biến. Biến động không được link với bất kể biến nào. Để quản trị nó, người ta sẽ dùng con trỏ trong C + + .Vì dịch chuyển không có tên hay phần khai báo nên con trỏ sẽ quản trị những biến cấp phát động trong C + +. Khi đó ta gọi nó là biến con trỏ. Để mở màn cấp phép vùng nhớ cho một vùng nhớ, ta sẽ triển khai như sau :

new ;

Ví dụ thực tiễn :new int ;new float ;Khi cấp phép thành công xuất sắc, con trỏ sẽ tự động hóa trỏ đến dịch chuyển. Vì dịch chuyển không có địa chỉ, ta phải gắn địa chỉ của nó lên con trỏ như sau :int * ptr = new int ;Lúc này, con trỏ đã được trỏ tới dịch chuyển kiểu int .Ngoài ra, bạn cũng hoàn toàn có thể khai báo là khởi tạo giá trị cùng lúc như sau :int * ptr1 = new int ( 2409 ) ;Nếu muốn xóa vùng nhớ của dịch chuyển, ta sẽ dùng toán tử delete. Cú pháp mẫu như sau :

delete ;

Ví dụ thực tế: delete ptr_a;

Hướng dẫn sử dụng con trỏ

Kết luận

Qua bài viết trên, hẳn là bạn đọc đã biết thêm được rất nhiều thông tin hữu dụng xoay xung quanh chủ đề về con trỏ trong C. Nhìn chung, con trỏ trong C có tương quan mật thiết đến rất nhiều nghành nghề dịch vụ khác nhau tại cấp phát động trong C. Vì thế để thao tác thành thạo với ngôn từ lập trình C + +, con trỏ là phần bạn phải hiểu rõ. Những khái niệm như địa chỉ ô nhớ hay cách khai báo, cách gán biến nhớ chỉ là những kiến thức và kỹ năng cơ bản và đơn thuần nhất. Phạm vi kiến thức và kỹ năng mà con trỏ C mang đến còn rất nhiều, đòi khỏi người học phải biết tự tìm tòi và rèn luyện chịu khó .

Mời bạn đọc tìm hiểu thêm thêm : Hadoop là gì ?

Tuy nhiên bạn đừng nản chí bởi con trỏ C là phần không quá khó nếu được rèn luyện nhiều lần. Đây cũng là phần mà bất kể lập trình viên nào cũng cần thông thuộc. Vì thế bên cạnh những kiến thức và kỹ năng mà Teky phân phối, hãy chịu khó tìm đọc thêm nhiều tài liệu nâng cao hơn về con trỏ C nhé. Rất nhiều thông tin hữu dụng được biên soạn lại bằng tiếng Việt, cho nên vì thế bạn cũng không cần lo ngại không tìm được tài liệu dễ hiểu. Chúc bạn đọc nhanh gọn làm chủ được phần kỹ năng và kiến thức xung quanh con trỏ C + + .