C++引用-创新互联
C++的引用个人感觉像是C#/Java等高级语言的传址的开端。也是C的指针概念上的一个拓展。现对C++引用进行一定的介绍:
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比雁山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式雁山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖雁山地区。费用合理售后完善,十年实体公司更值得信赖。一 , 引用的申明
#includeusing namespace std; int main() { int a = 1; int &po = a; po = 2; cout << "a的值为 :" << a << endl; return 0; }
得到的结果为:
可以看到 , 当对po进行赋值2的时候,a的值也变为了2.其实po和a指向的是同一块内存。这里po和指针(*)很像。
引用(&)和 指针(*)的区别:
① ,引用& 申明时就必须初始化。如声明int的引用 int &po = a;直接要为其赋值a(int类型)。
② ,引用没有地址的概念(没有保存地址 , 而是直接指向内容 , 所以它的效率比指针要高)。
二 , 其他类型的引用申明
①:数组:
#includeusing namespace std; int main() { int a[2][3]; int (&po)[2][3] = a;//申明一个引用,必须要对其进行初始化 po[0][1] = 3; cout << "a[0][1]的值为:" << *((*a)+1) << endl; return 0; }
得到的结果为:
注意数字的引用申明
②:指针:
#includeusing namespace std; int main() { int a = 4; int *p = &a; int * (&po) = p; *po = 5;//此时 , 引用po和指针p的用法是一样的 cout << "a的值为:" << *p << endl; cout << "a的值为:" << *po << endl; return 0; }
执行结果为:
关于结构体的申明和int是一样的额
(重点)关于引用参数:
#includeusing namespace std; void fun( int &a) { a = 2; } int main() { int a = 1; fun(a); cout << "a的值为 : " << a << endl; return 0; }
fun函数如果用C#来写的话 , 应该是 fun( ref int a ), 和C#一样,当对fun的参数a进行重赋值时,main中实参a的值也会发生改变这和C的指针效果是一样的,不一样的是:
C++传引用比C传指针的效率要高 , 因为引用没有保存地址,它直接指向内容。我把C的传指针实现一下:
#includeusing namespace std; void fun( int *a) { *a = 2; } int main() { int a = 1; fun(&a); cout << "a的值为 : " << a << endl; return 0; }
当然 , 如果要使用C++的话 , 最好是用引用 , 效率高啊。。。。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章题目:C++引用-创新互联
网址分享:http://myzitong.com/article/cosdsg.html