(一)void*作形参
#include <stdio.h>
/*
* int type 表示需要打印的类型。即,标记void指针的类型
* */
void printAll(const void *p_num, int type){
switch(type){
case 1: //代表char
printf("%c\n", *(char *)p_num);
break;
case 2: //代表int
printf("%d\n", *(int *)p_num);
break;
case 3: //代表float
printf("%f\n", *(float *)p_num);
break;
default:
;
}
}
int main(){
char ch = 'i';
int val = 12;
float fval = 3.4f;
printAll((const void *)&ch, 1);
printAll((const void *)&val, 2);
printAll((const void *)&fval, 3);
return 0;
}
void *也可能代表二级指针,使用时需要先行强转为对应的二级指针
#include <stdio.h>
int main(){
char ch = 'r';
int val = 67;
float fval = 4.7f;
char *p_ch = &ch;
int *p_val = &val;
float *p_fval = &fval;
void *p_v = NULL;
p_v = &p_ch; //p_v指向了一级指针,即本身当作二级指针来用了
printf("%c\n", **(char **)p_v);
p_v = &p_val;
printf("%d\n", **(int **)p_v);
p_v = &p_fval;
printf("%g\n", **(float **)p_v);
return 0;
}