解释C语言中的指针指向和空指针指向的概念吗?

双指针或指向指针的指针是一个变量,用于保存另一个指针的地址。

以下是指向指针的声明-

datatype ** pointer_name;

例如,int ** p; p是指向指针的指针

初始化-'&'用于初始化。

例如,

int a = 10;
int *p;
int **q;
p = &a;

访问-间接操作符(*)用于访问。

例子

以下是指向指针的C语言程序-

#include<stdio.h>
main ( ){
   int A = 10;
   int *p;
   int **q;
   p = &A;
   q = &p;
   printf("A =%d",A);
   printf("A value of pointer = %d", *p);
   printf("A value of double pointer = %d", **q);
}

输出

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

A=10
A value of pointer = 10
A value of double pointer = 10

虚空指针

它是一种指针,可以保存任何数据类型变量的地址(或可以指向任何数据类型变量的地址)。

以下是void指针的声明-

void *pointername;

例如,void * vp;

访问-类型转换运算符用于通过变量的指针访问变量的值。

语法如下-

* ( (type cast) void pointer)

例如,

int i=10;
void *vp;
vp = &i;
printf ("%d", * ((int*) vp));
type cast

例子

以下是void指针的C程序-

#include<stdio.h>
main ( ){
   int i =10;
   float f = 5.34;
   void *vp;
   clrscr ( );
   vp = &i;
   printf ("i = %d", * ((int*)vp));
   vp = &f;
   printf ( "f = %f", * ((float*) vp));
   getch ( );
}

输出

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

i = 10
f = 5.34