首页 > 编程 > C++ > 正文

C++指针的引用

2019-11-11 02:21:50
字体:
来源:转载
供稿:网友
// 指针的引用.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;struct Teacher{	char name[64];	int age;};int GetTeacherAge(Teacher* *p)//指针p在内存中的地址{	Teacher *tmp = NULL;	if (p == NULL)	{		return -1;	}	//tmp = (Teacher *)malloc(sizeof(Teacher));//这句话就是分配内存空间//C语言malloc	tmp = new Teacher ();//等价于上面的语句//C++用new	if (tmp==NULL)	{		return -2;	}	tmp->age = 33;	*p = tmp;// p的值是一个地址,*p就是修改这个地址里面的值//因为p是二级指针所以*p储存的也是一个地址所以将tmp指针赋值给*p	//如果不写着句下边的pt就无法指向tmp   	return 0;}//利用指针的引用int GetTeacherAge2(Teacher* &myp)//函数参数为指针{	//给myp赋值就相当于给mian函数中的pt赋值	myp = new Teacher();//给指针分配内存空间	if (myp ==NULL)	{		return -1;	}	myp->age = 36;}void FreeTeacher(Teacher *pt){	if (pt==NULL)	{		return;	}	free(pt);//将指针所指向的内存空间删掉}//常引用void CoutTeacherAge(const Teacher &myp1){	//常引用,使参数变量拥有了只读属性	//myp1.age = 32;//这一句就会报错,因为不能修改	//除了const int &x = y;这种以变量为右值的定义方法还有	//const int &x = 40;这种方法也可以,这种方法给x自动分配了内存空间,因为是常引用	//int &x = 40;就会报错,因为40是值没有内存空间	cout << "myp1:" << myp1.age << endl;}int main(){	Teacher *pt;	GetTeacherAge(&pt);	cout << "age: " << pt->age << endl;	FreeTeacher(pt);	GetTeacherAge2(pt);	cout << "age: " << pt->age << endl;	FreeTeacher(pt);    return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选