引用作为函数返回值的几种应用
2017-01-10 00:04
281 查看
#include <iostream> using namespace std; int getAA() { int a; a = 10; return a; } int& getAAA() { int a; a = 10; return a; } int* getAAAA() { int a; a = 10; return &a; } //static修饰一个变量的时候是一个状态变量 int j() { static int a = 10; a++; printf("%d\n", a); return a; } int& j1() { int a = 100; return a; } int *j2() { int a = 200; return &a; } int& g1(int *p) { *p = 100; return *p; } int g2(int *p) { *p = 200; return *p; } int main() { int a1 = 0; int a2 = 0; a1 = getAA(); a2 = getAAA();//为什么这个他可以呢?因为他是一个变量进行拷贝,你函数不存在了数值编程乱码,至少赋值的时候已经给出数据了 int &a3 = getAAA();//乱码 //理由C++编辑器他的作用是把getAAA()这个函数返回值拷贝给a3,然后自己析构了不存在了,所以出现了乱码 //我自己的理解,就是引用他不是变量,他不具有变量的一些特性,比如赋值操作 //int &a4 = 0;//这句我们都知道是错了 cout << a1 << endl; cout << a2 << endl; cout << a3 << endl; //j() = 100;10 = 100不能直接赋值除非是判断,就算是判断也要是== j1() = 100;//这里可以的原因很简单就是int& = *p数据的 cout << j1() << endl; *(j2()) = 200; cout << *(j2()) << endl; ////////////////////////////////////////////////////////////////////////// //函数参数为指针,返回为引用的情况 int a5 = 10; a5 = g1(&a5); cout <<"a5="<< a5 << endl; int &a6 = g1(&a5); cout << "a6=" << a6 << endl; system("pause"); return 0; }