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");
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章