您现在的位置是:主页 > news > 卫生间做防水网站/同城推广引流平台
卫生间做防水网站/同城推广引流平台
admin2025/5/11 6:17:47【news】
简介卫生间做防水网站,同城推广引流平台,仙桃网站网站建设,哪些网站可以做国外生意C引用与指针的比较 引用是C中的概念,初学者容易把引用和指针混淆一起。 一下程序中,n是m的一个引用(reference),m是被引用物(referent)。 int m; int &n m; n相当于m的别名(…
引用是C++中的概念,初学者容易把引用和指针混淆一起。
一下程序中,n是m的一个引用(reference),m是被引用物(referent)。
n相当于m的别名(绰号),对n的任何操作就是对m的操作。
所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。
l
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象),这里指不能再绑定其他的对象,只要不是const,就可以改变值,即可以通过引用改变绑定对象的值,因为它们其实是相同的。
以下示例程序中,k被初始化为i的引用。语句k = j并不能将k修改成为j的引用,只是把k的值改变成为6。由于k是i的引用,所以i的值也变成了6。
引用的主要功能是传递函数的参数和返回值。
内联函数是代码被插入到调用者代码处的函数。如同 #define 宏,内联函数通过避免被调用的开销来提高执行效率,尤其是它能够通过调用(“过程化集成”)被编译器优化。
#include <iostream>
using namespace std;
void swap(int &i, int &j){
}
void print( const int &l){//如果形参是const,实参both。如果实参const,说明实参不能被改动,则形参必须const。
}
void main(){
//error :&m=j;引用一旦初始化后不可再绑定其他对象
//
//
//
}
//总结:一般变量想被外部文件使用,直接在引用的地方加上extern就ok了。const变量不行,如果想外部引用,初始化的地方加extern,引用的地方也要加
本节主要讲函数调用及参数传递的一些问题。
首先说参数调用,参数调用做了2件事情,用对应的实参初始化函数的形参,并将控制权转移给被调用函数,主调函数的执行被挂起,被调函数开始执行。函数的运行以形参的隐式定义和初始化开始。执行到return的时候,被调函数完成,主调函数在调用处开始恢复执行,并将函数的返回值用作求解调用操作符的结果,继续处理在执行调用的语句中的剩余工作。
参数传递
第一种传递方式:值传递
值传递需要复制对应的实参实现初始化,当用实参副本初始化形参时,函数并没有访问调用函数所传递的实参本身,对实参副本的修改也是局部的,函数调用结束就结束了,因此不会修改实参的值。
引用传递:
因为复制实参并不是在所有的情况下都适合,不适合复制实参的情况包括:
当需要在函数中修改实参的值时;
当需要以大型对象作为实参传递时,对实际的应用而言,复制对象所付出的时间和存储空间代价往往过大
当没有办法实现对象的复制时
引用形参直接关联到绑定的对象而非对象的副本,必须使用与该引用绑定的对象初始化该引用。引用形参完全以相同的模式工作。在c语言中,人们习惯用指针,在c++中使用引用。
使用引用形参返回额外的信息。这个跟上面有些类似,只不过说如果你想要多返回些东西,但是直接又没法返回,那么就借助引用好了,通过引用改变改变实参的值。
利用const引用避免复制。这个主要是大型对象的时候,复制代价比较高。比如string。。。
很多时候如果不需要改变值,就加上 const 。double fl=1.2;
const double *pl=&fl;//这个是正确的,赋值初始化
*pl=4.3;//error:因为已经是const类型的了,不允许改变值,不过指针pl还是可以指向其他对象的。
double *cosnt plt;这个时候plt是不能更改的。。。
string.h是c语言对应的标准库,在c++里面对应的是<cstring>