C++中常引用做形参

1.C++中引用可以在一定程度上代替二级指针的作用,比如下面代码中的getTeacher2()函数中,形参使用用指针的引用,代替了二级指针。 

2.还可以用定义常引用的方式,实现用字面量给引用赋值,字面量没有内存空间,所以在初始化时C++编译器会偷偷地给引用分配内存空间,但是字面量还是没有内存空间。

#include "iostream"
using namespace std;

struct Teacher
{
	char name[64];
	int age;
};

int getTeacher(Teacher **p)
{
	Teacher *tmp = NULL;
	if (p == NULL)
	{
		return -1;
	}
	tmp = (Teacher *)malloc(sizeof(Teacher));
	if (tmp == NULL)
	{
		return -2;
	}
	tmp->age = 33;
	*p = tmp;
}

int getTeacher2(Teacher * &p)
{
	p = (Teacher *)malloc(sizeof(Teacher));
	if (p == NULL)
	{
		return -1;
	}
	p->age = 66;

}

void freeTeacher(Teacher *p)
{
	if (p == NULL)
	{
		return ;
	}
	free(p);
}
int main01()
{

	Teacher *pt1 = NULL;
	//1 c语言中的二级指针
	getTeacher(&pt1);
	cout << "pt1->age =   " << pt1->age << endl;
	freeTeacher(pt1);
	
	//2 c++中的引用
	getTeacher2(pt1);
	cout << "pt1->age = " << pt1->age << endl;
	freeTeacher(pt1);

	system("pause");
	return 0;
}

void printfTeacher(const Teacher &tmp)                 //常引用做函数形参,只能用,不能改
{
	cout <<"tmp.age =  "<< tmp.age << endl;
}
void main()
{
	//int &a = 10;                           //这种赋值是错误的,字面量10没有内存空间,无法起别名
	const int &a = 10;                    // 可以通过常引用的方式,实现字面量给引用赋值
	cout << a << endl;

	Teacher t2;
	t2.age = 77;
	printfTeacher(t2);

	system("pause");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值