#2020学习打卡##C程序设计语言# void * 和 void **有什么区别?

已邀请:

zkbhj - 凯冰科技站长

赞同来自:


void* 表示这是一个指针,它存放了一个任意类型对象的地址;
void** 表示这是一个指针,它指向一个void* 型的指针,这个void *的指针又存放了一个任意类型对象的地址


一、如何访问这两种类型的数据呢? 就是需要先进行强制类型转换,然后再使用

main.cpp
#include<iostream>

int main(){
int a=1111;
void *p = &a; // void* 可以存放任意类型对象的地址
void **pp =&p; // void** 指针指向了 void* 类型的对象
printf("void *p: %d\n", *(int*)p); //强制把 void* 类型转化为 int* 类型对象,然后使用 * 解引用
printf("void **pp: %d\n", *(int**)p);//强制把 void** 类型转化为 int** 类型对象,然后使用 * 解引用
return 0;
}
输出结果:
void *p: 1111
void **pp: 1111

要回复问题请先登录注册