📅  最后修改于: 2023-12-03 15:14:00.881000             🧑  作者: Mango
在 C++ 中,指针可以指向任何类型的数据,这就是所谓的“泛型指针”。使用泛型指针可以写出更加灵活的代码。
定义泛型指针,可以使用 void
类型来表示不确定的数据类型。例如:
void *ptr;
这个指针可以指向任何类型的数据。但如果需要使用指针所指向的数据,需要进行类型转换。
使用泛型指针时,需要先将其转换为具体的类型指针,然后才能使用指针所指向的数据。
例如,可以使用下面的语句将 void
类型的指针转换为 int
类型的指针:
int *iptr = static_cast<int*>(ptr);
然后就可以使用 iptr
操作指向的数据。
下面是一个使用泛型指针的示例程序,它可以同时处理 int
和 char
类型的数组:
#include <iostream>
int main()
{
int arr[] = {1, 2, 3, 4, 5};
char s[] = "Hello";
void *ptr;
int *iptr;
char *cptr;
ptr = arr;
iptr = static_cast<int*>(ptr);
for(int i = 0; i < 5; ++i) {
std::cout << iptr[i] << " ";
}
std::cout << std::endl;
ptr = s;
cptr = static_cast<char*>(ptr);
for(int i = 0; i < 5; ++i) {
std::cout << cptr[i];
}
std::cout << std::endl;
return 0;
}
输出结果为:
1 2 3 4 5
Hello
使用泛型指针可以写出更加灵活的代码,但需要注意类型转换的问题。在使用泛型指针时,要保证代码的安全性和正确性。