Cprogramming 简明教程
void Pointer in C
Example of void Pointer
以下示例显示了如何在 C 程序中使用 void 指针 −
#include <stdio.h>
int main(){
int a = 10;
char b = 'x';
// void pointer holds address of int a
void *ptr = &a;
printf("Address of 'a': %d", &a);
printf("\nVoid pointer points to: %d", ptr);
// it now points to char b
ptr = &b;
printf("\nAddress of 'b': %d", &b);
printf("\nVoid pointer points to: %d", ptr);
}
An Array of void Pointers
我们可以声明 void pointers 的 array 并存储指向不同 data types 的指针。
void 指针是指针,在 C 中可以容纳任何数据类型的内存地址。因此,void 指针数组是可以存储内存地址的数组,但这些地址可以指向不同数据类型的变量。
您还可以将 pointers 存储到任何用户定义的数据类型(例如数组和 structures )中。
Example
在此示例程序中,我们声明了一个空指针数组并将其存储在每个下标的不同类型(int、float 和 char *)变量的指针。
#include <stdio.h>
int main(){
void *arr[3];
int a = 100;
float b = 20.5;
char *c = "Hello";
arr[0] = &a;
arr[1] = &b;
arr[2] = &c;
printf("Integer: %d\n", *((int *)arr[0]));
printf("Float: %f\n", *((float *)arr[1]));
printf("String: %s\n", *((char **)arr[2]));
return 0;
}
当你运行这段代码时,它将产生以下输出:
Integer: 100
Float: 20.500000
String: Hello
Application of void Pointers
下面列出了一些空指针的常见应用 −
void *malloc(size_t size);
-
空指针用于实现通用函数。动态分配函数 malloc() 和 calloc() 返回“ void *”类型,这一特性允许使用这些函数分配任何数据类型的内存。
-
空指针的最常见应用是数据结构的实现,例如 linked lists 、 trees 和 queues 等动态数据结构。
Limitations of void Pointer
空指针具有以下限制:
-
由于其具体大小,空指针不能在 Pointer arithmetic 中使用。
-
它不能作为解引用使用。
-
空指针不能与 increment or decrement operators 一起使用,因为它没有特定的类型。