📜  c++ 泛型指针 - C++ (1)

📅  最后修改于: 2023-12-03 15:14:00.881000             🧑  作者: Mango

C++ 泛型指针

在 C++ 中,指针可以指向任何类型的数据,这就是所谓的“泛型指针”。使用泛型指针可以写出更加灵活的代码。

定义泛型指针

定义泛型指针,可以使用 void 类型来表示不确定的数据类型。例如:

void *ptr;

这个指针可以指向任何类型的数据。但如果需要使用指针所指向的数据,需要进行类型转换。

使用泛型指针

使用泛型指针时,需要先将其转换为具体的类型指针,然后才能使用指针所指向的数据。

例如,可以使用下面的语句将 void 类型的指针转换为 int 类型的指针:

int *iptr = static_cast<int*>(ptr);

然后就可以使用 iptr 操作指向的数据。

示例

下面是一个使用泛型指针的示例程序,它可以同时处理 intchar 类型的数组:

#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
总结

使用泛型指针可以写出更加灵活的代码,但需要注意类型转换的问题。在使用泛型指针时,要保证代码的安全性和正确性。