函数多个返回值(返回多个参数/局部变量)通过双重指针来实现

测试用例:

[cpp][/cpp]

view plaincopyprint?

  1. // DoublePTest.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include “stdafx.h”
  4. #include <stdlib.h>//malloc需要的头文件
  5. #include “cstring”//memset需要的头文件
  6. using namespace std;
  7. void Func(char** p)
  8. {
  9.     *p = (char*)malloc(3);
  10.     char* c = new char[3];
  11.     memset(c, ‘a’, 3);
  12.     //c[3]=’\0′;   //if there is open,below delete is wrong
  13.     memcpy(*p, c, 3);
  14.     delete c;
  15.     c=NULL;
  16. }
  17. int _tmain(int argc, _TCHAR* argv[])
  18. {
  19.     char *p = NULL;
  20.     Func(&p);
  21.     if(p)
  22.     {
  23.         char *sp =p;
  24.         int len= strlen(sp);
  25.         delete p;
  26.         p = NULL;
  27.     }
  28.     return 0;
  29. }
  30. 这里的测试代码只是测试返回一个指针类型的变量,比如字符串或者是内存中的一块buffer,当然返回一般的参数或者一般的局部变量的值通过引用就可以实现。

标签