Computer >> Máy Tính >  >> Lập trình >> lập trình C

Các loại con trỏ khác nhau trong ngôn ngữ C là gì?

Con trỏ là một biến lưu trữ địa chỉ của một biến khác.

Cú pháp cho con trỏ như sau -

pointer = &variable;

Các loại con trỏ

Có tám loại con trỏ khác nhau như sau -

  • Con trỏ rỗng

  • Con trỏ trống

  • Con trỏ hoang dã

  • Con trỏ nguy hiểm

  • Con trỏ phức tạp

  • Con trỏ gần

  • Con trỏ xa

  • Con trỏ lớn

Con trỏ rỗng

Bạn tạo một con trỏ null bằng cách gán giá trị null tại thời điểm khai báo con trỏ.

Phương pháp này hữu ích khi bạn không gán bất kỳ địa chỉ nào cho con trỏ. Một con trỏ null luôn chứa giá trị 0.

Ví dụ

Sau đây là chương trình C cho con trỏ null -

#include <stdio.h>
int main(){
   int *ptr = NULL; //null pointer
   printf("The value inside variable ptr is:\n%d",ptr);
   return 0;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

The value inside variable ptr is:
0

Con trỏ Void

Nó là một con trỏ không có kiểu dữ liệu liên quan với nó. Một con trỏ void có thể chứa các địa chỉ thuộc bất kỳ loại nào và có thể được đánh máy cho bất kỳ loại nào.

Nó còn được gọi là con trỏ chung và không có bất kỳ kiểu dữ liệu chuẩn nào.

Nó được tạo bằng cách sử dụng từ khóa void.

Ví dụ

Sau đây là chương trình C cho con trỏ void -

#include <stdio.h>
int main(){
   void *p = NULL; //void pointer
   printf("The size of pointer is:%d\n",sizeof(p)); //size of p depends on compiler
   return 0;
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

The size of pointer is:8

Con trỏ Wild

Con trỏ hoang còn được gọi là con trỏ chưa được khởi tạo. Vì chúng trỏ đến một số vị trí bộ nhớ tùy ý và có thể khiến chương trình gặp sự cố hoặc hoạt động không tốt.

Loại con trỏ C này không hiệu quả. Bởi vì chúng có thể trỏ đến một số vị trí bộ nhớ không xác định có thể gây ra sự cố trong chương trình của chúng tôi. Điều này có thể dẫn đến sự cố chương trình.

Bạn nên thận trọng khi làm việc với các con trỏ hoang dã.

Ví dụ

Sau đây là chương trình C cho con trỏ đại diện -

#include <stdio.h>
int main(){
   int *p; //wild pointer
   printf("\n%d",*p);
   return 0;
}
Process returned -1073741819 (0xC0000005) execution time : 1.206 s
Press any key to continue
i.e. you won’t get output, some compilers show error message at output