c++裡面指標的引用作函式引數
阿新 • • 發佈:2019-02-10
指標的引用,c++裡面的指標的引用。
相當於c語言裡面的二級指標。
#include <stdlib.h>
using namespace std;
//函式返回值作左值
//指標的引用
//回憶二級指標
struct Teacher
{
char name[20];
int age;
};
//在被呼叫函式獲取資源
//*p=&tp1
//函式指標作引數:在被呼叫函式裡面給指標分配記憶體
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的值賦給*p
*p=tmp;
}
//指標的引用作函式引數
int getTeacher1(Teacher* &myvar)
{
//給myvar賦值,相當於給main函式中的tp1指標
myvar=(Teacher *)malloc(sizeof(Teacher));
if(myvar ==NULL)
{
return -1;
}
myvar->age=36;
}
void freeTeacher(Teacher * tp1)
{
if(tp1 == NULL)
{
return ;
}
free(tp1);
}
int main(int argc,char *argv[])
{
//實參的值為空,在棧區分配 tp1是一個地址。
Teacher *tp1=NULL;
getTeacher(&tp1); //將地址的地址傳入進去
cout<<"age="<<tp1->age<<endl;
freeTeacher(tp1);
getTeacher1(tp1); //將地址的地址傳入進去
cout<<"age="<<tp1->age<<endl;
freeTeacher(tp1);
//c語言中的二級指標(c++裡面的指標引用)
return 0;
}