// 指針的引用.cpp : 定義控制臺應(yīng)用程序的入口點(diǎn)。//#include "stdafx.h"#include <iostream>using namespace std;struct Teacher{ char name[64]; int age;};int GetTeacherAge(Teacher* *p)//指針p在內(nèi)存中的地址{ Teacher *tmp = NULL; if (p == NULL) { return -1; } //tmp = (Teacher *)malloc(sizeof(Teacher));//這句話就是分配內(nèi)存空間//C語言malloc tmp = new Teacher ();//等價于上面的語句//C++用new if (tmp==NULL) { return -2; } tmp->age = 33; *p = tmp;// p的值是一個地址,*p就是修改這個地址里面的值//因?yàn)閜是二級指針?biāo)?p儲存的也是一個地址所以將tmp指針賦值給*p //如果不寫著句下邊的pt就無法指向tmp return 0;}//利用指針的引用int GetTeacherAge2(Teacher* &myp)//函數(shù)參數(shù)為指針{ //給myp賦值就相當(dāng)于給mian函數(shù)中的pt賦值 myp = new Teacher();//給指針分配內(nèi)存空間 if (myp ==NULL) { return -1; } myp->age = 36;}void FreeTeacher(Teacher *pt){ if (pt==NULL) { return; } free(pt);//將指針?biāo)赶虻膬?nèi)存空間刪掉}//常引用void CoutTeacherAge(const Teacher &myp1){ //常引用,使參數(shù)變量擁有了只讀屬性 //myp1.age = 32;//這一句就會報錯,因?yàn)椴荒苄薷?//除了const int &x = y;這種以變量為右值的定義方法還有 //const int &x = 40;這種方法也可以,這種方法給x自動分配了內(nèi)存空間,因?yàn)槭浅R?//int &x = 40;就會報錯,因?yàn)?0是值沒有內(nèi)存空間 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;}
新聞熱點(diǎn)
疑難解答
圖片精選