c++引用详解( 二 )

指针的引用
#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; } p->age = 33; *p = tmp;}//指针的引用做函数参数int getTeacher2(Teacher* &myp){//给myp赋值相当于给主函数中的pT1赋值 myp = (Teacher*)malloc(sizeof(Teacher)); if (myp == NULL) {return -1; } p->age = 36;}void FreeTeacher(Teacher *pT1){ if (pT1 == NULL) {return; } free(pT1);}void main(){ Teacher *pT1 = NULL; getTeacher(&pT1);//二级指针 cout << "age:" << pT1->age << endl; FreeTeacher(pT1); getTeacher2(pT1);//引用 cout << "age:" << pT1->age << endl; FreeTeacher(pT1); cout << "hello.." << endl; system("pause"); return;}c++中的const常量
可能分配内存空间,也可能不分配
当const常量为全局,并且需要在其他文件中使用,会分配空间
在使用&操作符,取const常量的地址,会分配
当const修饰引用,会分配
#include<iostream>using namespace std;void main(){ int x = 20; const int &y = x;//常引用让变量拥有只读属性 不同通过y去修改x了 //常引用初始化分为2种情况//1)用变量 初始化 常引用 {int x1 = 30;const int &y1 = x1;} //2)用字面量 初始化 常引用 {const int a = 40;int &m = 41;//普通引用 引用一个字面量//字面量有没有内存地址?-->没有 } cout << "hello.." << endl; system("pause"); return;}结论:
const &int e==const int* const e
普通引用==int const e
当使用常量对const引用进行初始化时,编译器会为常量值分配空间,并用引用名作为这段空间的别名
使用字面量对const引用初始化后,将生成一个只读变量




推荐阅读