### return 语句

return 语句用于退出当前调用的函数。当程序在一个函数中执行时，遇到 return 语句将退出当前函数，返回到调用该函数的地方开始执行下一条语句。下面的代码定义了一个 GetPort 函数，在函数体中如果获取一个合法的端口，使用 return 语句提前结束函数的调用。

bool GetPort(int &nPort)

{

int nRet = rand(); //随机获取一个整数

if (nRet < 1000) //假设端口号小于 1000,表示是合法的端口号

{

nPort = nRet;

cout << "成功获取端口" << endl;

return true; //结束当前函数调用

}

cout << "获取端口失败" << endl;

return false; //结束当前函数调用

}

在函数内使用 return 语句时，注意 return 语句返回的类型与函数的返回值类型相同。return 语句不及可以返回一个常量值，还可以返回一个变量、表达式等。其中，变量或表达式的结果作为函数的返回值。例如：

return nPort; //返回一个变量

return nPort++; //返回一个表达式结果

如果函数没有返回值，即函数的返回值是 void 类型，则应直接使用 return 语句返回。例如：下面的函数从数组中获取一个比指定参数值大的元素。

void GetMax(int nArray[], int nLen, int &nData)

{

for(int i=0; i<nLen; i++)

{

if (nArray[i] > nData) //如果发现了一个元素比 nData 大

{

nData = nArray[i]; //将该元素赋值给 nData

return; //然后直接返回，函数调用结束

}

}

}

在使用 return 语句提前结束函数时，需要注意如果代码之前在堆中分配了内存，则在 return 语句之前应释放内存，防止产生内存泄露。例如：

void ReturnDemo(int min)

{

int * pArray = new int[5]; //在堆中构造一个整型数组

for(int i=0; i<5; i++) //设置数组元素值

{

pArray[i] = i;

}

if (pArray[0] > min) //进行数据比较

{

delete [] pArray; //释放数组空间

return; //退出函数

}

else

{

pArray[0] = min; //设置数组元素

}

delete [] pArray; //释放数组元素

}