#include <iostream>
using namespace std;
// 二级指针的使用 [11/24/2017 Andrew]
struct Teacher
{
char name[64];
int age;
};
// 在被调用函数中获取资源必须使用二级指针,因为局部函数
//中申请的变量会在函数调用结束的时候被释放掉,因此要使用二级指针 获取申请内存的实际地址
//这样就算局部函数申请结束的时候,也能够得到想要的内存空间
int getTeacher(Teacher **p) //传进来的指针是传值,多以编译器会从新申请一个指针,只不过跟原来的指针指向同一个内存区域
//会被编译但是新的指针的改变并不会改变原来指针值,只能通过指针改变指针指向的值,反过来要想改变指针必须使用指向指针的指针
{
Teacher *temp = NULL;
if( p == NULL )
{
return -1;
}
temp = (Teacher *) malloc(sizeof(Teacher));
if(temp == NULL)
{
return -2;
}
temp ->age =33;
//通过修改实参的地间接的修改实参的值
*p = temp;
return 0;
}
//C++中的指针的引用 ,做函数参数
int getTeacher2(Teacher * &myp)
{
//因为使用的是引用,因此给myp赋值就相当于给main函数中的pt1赋值
myp = (Teacher *) malloc(sizeof(Teacher));
if( myp == NULL )
{
return -1;
}
myp ->age =36;
return 0;
}
void FreeTeacher(Teacher *pt)
{
if(pt == NULL)
{
return ;
}
free(pt);
}
int main()
{
Teacher *pt1= NULL;
// 1 C语言中的二级指针 [11/24/2017 Andrew]
getTeacher(&pt1);
cout << "age :" << pt1->age << endl;
FreeTeacher(pt1);
// 2 C++中的指针的引用 [11/24/2017 Andrew]
getTeacher2(pt1);
cout << "age :" << pt1->age << endl;
FreeTeacher(pt1);
system("pause");
return ·120;
}
指针的引用做函数的参数
最新推荐文章于 2023-11-04 22:21:55 发布