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