在C语言里,有一种指针类型void*,它可以允许在函数传参时传递不同类型的指针:
void test(void* p){
//省略
}
int main(){
int a = 3;
char b = 'h';
test(&a);
test(&b);
}
在上面的情况里,int类型的指针与char类型的指针都可以传入test函数,但是怎么让test函数知道传入的数据类型并做对应的处理呢?
下面这个例子:
void test(void* p) {
\\...
}
int main() {
int a[5] = { 300,400,500,600,700 };
char b[3] = { 6,7,8 };
test(a);
test(b);
}
有一个int数组与char数组,我需要将它们依次传入test处理,如果我将void指针p转换为int型:
void test(void* p) {
int* pa = (int*)p;
printf("%d\n", *pa);
}
int main() {
int a[5] = { 300,400,500,600,700 };
char b[3] = { 6,7,8 };
test(a);
test(b);
}
结果自然是数组a中的值能正常处理,b中的则不行。
void test(void* p) {
char* pa = (char*)p;
printf("%d\n", *pa);
}
int main() {
int a[5] = { 300,400,500,600,700 };
char b[3] = { 6,7,8 };
test(a);
test(b);
}