#includeusing namespace std; void test02(int& c, int& d); void test01() { //普通变量引用 int a = 10; int& b = a; //int*b=&a; cout << "b=" << b << endl; //cout <<"b=" << *b << endl; cout <<"a=" << a << endl; //常量引用 const int num = 20; int* pnum = (int*)# *pnum = 200; cout<<"num=" << num << endl; //数组引用 int arr[10]; int (&pArr)[10]=arr; //int* pArr=arr; for (int i = 0;i<10;i++) { pArr[i] = (i + 1) * 2; cout <<"ar[i] = " << arr[i] << endl; } //参数传递 int c = 10; int d = 20; test02(c,d); cout << "c =" << c << " d=" << d << endl; } void test02(int& c, int& d) { int temp = c; c = d; d = temp; } //void test02(int *c,int *d){ // int temp=*c; // *c=*d; // *d=temp; //} //函数返回引用 int& fun1() { int a = 10; return a; //第二次访问a的值会被释放掉 } int& fun2() { static int a = 10; return a; } void test03() { int& f1 = fun1(); cout << "f1=" << f1 << endl; cout << "f1=" << f1 << endl; int& f2 = fun2(); cout << "f2=" << f2 << endl; cout << "f2=" << f2 << endl; fun2() = 100; cout << "f2=" << f2 << endl; cout << "f2=" << f2 << endl; } //指针引用 struct Person { int id; }; //void allocateSpace(Person **p) { // *p = new Person(); // (*p)->id = 20; //} void allocateSpace(Person*& p) { p = new Person(); p->id = 20; } void test04() { Person* p = NULL; //allocateSpace(&p); allocateSpace(p); cout << "p.age = " << p->id << endl; delete p; } int main() { test01(); test03(); test04(); system("pause"); return EXIT_SUCCESS; }



