以指针作为引用参数(一)

有时候,函数的确需要修改指针参数使得该指针指向一个新的位置,程序员也需要这样的修改,来影响实参。这就是以指针作为参数的唯一情况!


参考:《数据结构与面向对象程序设计》(C++版)Michael Main等编著


下面的例子创建了一个名为allocate_doubles的函数,它为一个新的动态数组分配内存。下面是该函数的原型:

void allocate_doubles(double*& p,size_t& n);

参数p是一个指向double类型的指针(也就是double*),而且,它还是一个引用参数(由符号由&表明)。因此,其完整的参数类型就是double *&。

void allocate_double(double*& p, size_t& n)
{
	cout << "How many doubles should I allocate" << endl;
	cout << "Please type a positive integer answer: ";
	cin >> n;
	p = new double[n];
}

在函数的实现中,参数p被修改,使得它指向了一个新数组。在程序中,我们可以使用allocate_double函数来为含有double值的数组分配内存,其中,数组的大小由用户交互确定。

double* numbers;
size_t array_size;
allocate_double(numbers, array_size);

在这个示例中,allocate_doubles函数将询问用户,该为多少个 double数字分配内存。用户的回答将用于设置参数array_size,然后函数为所需大小的数组分配内存。因为哈数使其形参p指向了新分配内存的double类型数组,而且希望实参umbers也指向这个新分配的内存,因此,这里就需要使用引用引用参数。

完整代码:

#include<iostream>
using namespace std;

void allocate_double(double*& p, size_t& n);
int main()
{
	double* numbers;
	size_t array_size;
	allocate_double(numbers, array_size);

}
void allocate_double(double*& p, size_t& n)
{
	cout << "How many doubles should I allocate" << endl;
	cout << "Please type a positive integer answer: ";
	cin >> n;
	p = new double[n];
}

参考:《数据结构与面向对象程序设计》(C++版)Michael Main等编著


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值