二級指針和指針參照

2020-08-11 18:18:03
#include <iostream>
using namespace std;
struct Teacher
{
	int age = 10;
};

int getTeacher1(Teacher** p)
{
	Teacher* tmp = NULL;
	tmp = (Teacher*)malloc(sizeof(Teacher));
	if (!tmp)
		return -1;
	tmp->age = 20;
	*p = tmp;
	return 0;
}
int getTeacher2(Teacher*& p)
{
	p = (Teacher*)malloc(sizeof(Teacher));
	if (p == NULL)
		return -1;
	p->age = 30;
	return 0;
}
int freeTeacher(Teacher* p)
{
	if (p == NULL)
		return 0;
	free(p);

}
int main()
{
	Teacher* t = NULL;
	//C語言中二級指針
	getTeacher1(&t);
	cout << t->age << endl;
	freeTeacher(t);
	//C++中的指針參照
	getTeacher2(t);
	cout << t->age << endl;
	freeTeacher(t);
}