### 举例说明指针参数和指针引用参数的区别

答案：

指针参数的定义方式为：

void PtrParam(int *nData)

{

}

指针引用参数的定义方式为：

void PtrRefParam(int *&nData)

{

}

他们都采用引用方式传递。但是对于指针参数来说，我们对指针参数进行 ++或—运算，它不会影响到实际的指针参数。例如：

void PtrParam(int *nData)

{

cout << *nData++ << endl; //不会影响到实际的指针参数，实际的指针参数还指向原来的元素

}

int main(int argc, char* argv[])

{

int nData[5] = {1, 2, 3, 4, 5}; //定义一个数组

int *pParam = nData; //定义一个整型指针，指向数组

PtrParam(pParam);

cout << *pParam << endl;

return 0;

}

输出结果如图 1 所示。

图 1 指针引用参数

但是如果采用指针引用方式，则情况就大不相同了。我们对指针参数进行 ++或—运算将影响到实际的指针参数。例如：

void PtrRefParam(int *&nData)

{

cout << *nData++ << endl; //将影响到实际的指针参数，实际的指针参数将指向下一个元素

}

int main(int argc, char* argv[])

{

int nData[5] = {1, 2, 3, 4, 5}; //定义一个数组

int *pParam = nData; //定义一个整型指针，指向数组

PtrRefParam(pParam);

cout << *pParam << endl;

return 0;

}

输出结果如图 2 所示。

图 2 运行效果