C语言中的指针有哪些不同类型?

指针是一个变量,用于存储另一个变量的地址。

指针的语法如下-

pointer = &variable;

指针类型

有八种不同类型的指针,如下所示:

  • 空指针

  • 虚空指针

  • 野指针

  • 悬空指针

  • 复合指针

  • 近指针

  • 远指针

  • 巨大的指针

空指针

通过在指针声明时分配空值来创建空指针。

当您不给指针分配任何地址时,此方法很有用。空指针始终包含值0。

例子

以下是空指针的C程序-

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

输出

执行以上程序后,将产生以下结果-

The value inside variable ptr is:
0

虚空指针

它是一个没有关联数据类型的指针。空指针可以保存任何类型的地址,并且可以类型转换为任何类型。

它也称为通用指针,没有任何标准数据类型。

它是通过使用关键字void创建的。

例子

以下是void指针的C程序-

#include <stdio.h>
int main(){
   void *p = NULL; //空指针
   printf("The size of pointer is:%d\n",sizeof(p)); //p的大小取决于编译器
   return 0;
}

输出

执行以上程序后,将产生以下结果-

The size of pointer is:8

野指针

通配指针也称为未初始化的指针。因为,它们指向任意的内存位置,并且可能导致程序崩溃或性能下降。

这种类型的C指针效率不高。因为,它们可能指向某些未知的内存位置,这可能会导致我们的程序出现问题。这可能导致程序崩溃。

建议在使用野指针时要谨慎。

例子

以下是用于野指针的C程序-

#include <stdio.h>
int main(){
   int *p; //野指针
   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