示例
(由于本人习惯于 Qt 中进行开发,所以这里为了方便,示例是在 Qt 工程中写的,其语法是一样的,只是输出方式不同)
来看一个非常简单的示例:
- typedef struct _Data{
- int a;
- int b;
- }Data;
- //指针函数
- Data* f(int a,int b){
- Data * data = new Data;
- data->a = a;
- data->b = b;
- return data;
- }
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- //调用指针函数
- Data * myData = f(4,5);
- qDebug() << "f(4,5) = " << myData->a << myData->b;
- return a.exec();
- }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 输出如下:
- f(4,5) = 4 5
- 1
- 注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。
- 不过也可以将其返回值定义为 void*类型,在调用的时候强制转换返回值为自己想要的类型,如下:
- //指针函数
- void* f(int a,int b){
- Data * data = new Data;
- data->a = a;
- data->b = b;
- return data;
- }
- 调用:
- Data * myData = static_cast<Data*>(f(4,5));
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 其输出结果是一样的,不过不建议这么使用,因为强制转换可能会带来风险。
|