当前位置: 首页 > news >正文

0基础做下载网站google网站

0基础做下载网站,google网站,海尔网站建设的优势,自己制作广告一、引用 1、引用的概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。 怎么说呢,简单点理解就是你的小名,家里人叫你小名&#…

一、引用

1、引用的概念

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空
间,它和它引用的变量共用同一块内存空间。

怎么说呢,简单点理解就是你的小名,家里人叫你小名,你就不是你了?显然不是,这个就是引用的概念,在变成过程中,引用的用法就是如下方图片就是最简单的引用表示,我先定义一个变量a然后给a取别名为b然后这里是把他们的地址都打印出来了,然后发现他们的地址都是一个,这样就能最简单的证明了引用就是取别名,就是共同访问同一个地址。

那么能否给b接着取别名呢?

当然可以了,如果收,别人叫你的小名,再给这个小名去一个小名就不是自己了?,代码测试如图,这样就可以得出引用是可以套用的。而&这个就是引用的符号,他和取地址符是同一个,那是因为他的原理其实就是一个指针。

2、引用的特性

引用在定义时必须初始化,因为引用和指针不同,指针是存放这个变量的地址,也就是说,这个指针,也可以不初始化,放入空值都是可以的。

 一个变量可以有多个引用,这个就像上文中说的,可以取好几个别名,最间的的说明就是一个人是可以有很多称呼的,如下图就可以看出,对d取地址就可以看出也是a。

引用一旦引用一个实体,再不能引用其他实体 ,这个引用不学指针可以更改地址,引用是只可以对一个变量引用,也就是说b是a的引用,那么b只能是a的别名,不可能存在b是别的别名,那么就可以说明引用具有唯一性。

引用是具有等级权限的 ,最简单就是常量,如下如图所示,就可以看出,如果对一个常量进行引用,就会报错,这就是引用的权限,引用是只可以限制权限,不能放大权限,就像下图所示,a是一个常量,然后他的属性是只读,那么b想引用他,并且变成可以写的变量,那肯定是不可以的,但是假如说,变量a是可以读写的,引用的时候只限制成只读,可以吗?答案是可以的,因为引用可以把权限变小,如下图二所示是没有报错的就是可以的,那么如何引用常量呢,就是把权限限制为平级,也就是也变成常量,如下图三就是把别名也变成常量,那么权限就是平级的了,所以也就是可以使用引用了。

 3、引用可以做什么?

最简单的就是传参,例如以前想要改变一个变量的值,那么就需要传递一个指针过去,但是有了引用就轻松多了,可以直接传参过去,然后函数内引用,访问的还是这个变量的地址,效果如图就是利用引用进行传参,还有就是返回值,就是经常使用的函授返回值,例如ADD返回两数相加的和,那么利用引用的话可以直接接收,不会产生临时变量,毕竟函数返回时,在栈帧销毁时,返回的值也是一个局部变量,会在函数结束时,随着栈帧的销毁而销毁,所以函数的返回时本质是创建一个临时变量,进行传参,在销毁,用引用传参如下图所示。

 但是一般的函数是不能这样使用的,因为如果一个函数在销毁后,接着去访问这个地址可能会找到啥?这个是不确定的,因为临时变量是在会销毁的,如果这个空间在销毁时,没被随机值刷新,那么可能会找到正确的值,但是如果这个空间在销毁时被随机值刷新了 ,那么就是访问到随机值,这个就是一个典型的越界访问了,所以这样使用引用时是有限制的,只有在静态变量、全局变量、栈帧还没没有销毁时、malloc等情况下才能用引用去取返回值,其他的情况就需要使用返回值了,那么对比一下引用和返回值的效率吧,代码测试如下图可以看出差别还是挺大的。

#include <time.h>
struct A { int a[10000]; };
void test1(A a) {}
void test2(A& a) {}
void test3()
{
    A a;
    size_t begin1 = clock();
    for (size_t i = 0; i < 100000; ++i)
        test1(a);
    size_t end1 = clock();
    size_t begin2 = clock();
    for (size_t i = 0; i < 100000; ++i)
        test2(a);
    size_t end2 = clock();
    cout << end1 - begin1 << endl;
    cout << end2 - begin2 << endl;
}

int main()
{
    test3();
    return 0;
}

4、引用和指针的区别

在上面说过引用的原理其实就是指针,但是引用和指针还是有点区别的,区别如下:

① 引用概念上定义一个变量的别名,指针存储一个变量地址。

② 引用在定义时必须初始化,指针没有要求

③引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体

④没有NULL引用,但有NULL指针

⑤在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节)

⑥引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小

⑦有多级指针,但是没有多级引用

⑧访问实体方式不同,指针需要显式解引用,引用编译器自己处理

⑨引用比指针使用起来相对更安全 

二、内联函数

以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调
用建立栈帧的开销,内联函数提升程序运行的效率。

简而言之就是和宏的用处差不多,宏是有缺陷,因为在宏的使用时是直接替换的,这样代码的安全性就大大下降了,总结一下宏的优缺点

优点:

1.增强代码的复用性。

2.提高性能。

缺点:

1.不方便调试宏。(因为预编译阶段进行了替换)

2.导致代码可读性差,可维护性差,容易误用。

3.没有类型安全的检查 。

而内联函数的用法就是和宏差不多,但是它可以把一个函数变成宏,但是有一点就是内联时,函数的代码是要求尽量简短,当然如果过多时编译器依然会把他当成函数处理,在简短 时内联函数就是直接替代,从下图反汇编就可以看出内敛函数是直接替代的,而不是call这个函数但是当行数过多时依然会当成函数调用了,测试如下,就可以看出内联函数也不是所有都可以替代。内联函数也不建议声明和定义分离,分离会导致链接错误。因为内联函数被展开,就没有函数地址了,链接就会找不到

inline int ADD(int a, int b)
{
    return a + b;
}

inline int ADD1(int a, int b, int c)
{
    c = a + b;
    a = a + b;
    b = a + b;
    c = a + b;
    a = a + b;
    b = a + b;
    c = a + b;
    a = a + b;
    b = a + b;
    c = a + b;
    a = a + b;
    b = a + b;
    c = a + b;
    a = a + b;
    b = a + b;
    c = a + b;
    a = a + b;
    c = a + b;
    b = a + b;
    return c;
}
int main()
{
    int ret = ADD(1, 3);
    int ret1 = ADD1(1, 3,2);
    return 0;
}


文章转载自:
http://leguan.stph.cn
http://bowlegged.stph.cn
http://sensitizer.stph.cn
http://chirurgery.stph.cn
http://penwiper.stph.cn
http://vandyke.stph.cn
http://stapedial.stph.cn
http://blind.stph.cn
http://encouraged.stph.cn
http://nakhodka.stph.cn
http://coptis.stph.cn
http://pyrexic.stph.cn
http://tar.stph.cn
http://dote.stph.cn
http://halid.stph.cn
http://warner.stph.cn
http://gumweed.stph.cn
http://surrogate.stph.cn
http://lognormal.stph.cn
http://preemptive.stph.cn
http://insanely.stph.cn
http://esprit.stph.cn
http://resemblance.stph.cn
http://eurocheque.stph.cn
http://loess.stph.cn
http://unrove.stph.cn
http://smudgily.stph.cn
http://siberian.stph.cn
http://surakarta.stph.cn
http://microprogrammed.stph.cn
http://hypomanic.stph.cn
http://happenchance.stph.cn
http://prettiness.stph.cn
http://pronoun.stph.cn
http://cycloaddition.stph.cn
http://detraction.stph.cn
http://boundless.stph.cn
http://triquetra.stph.cn
http://latinity.stph.cn
http://diplopy.stph.cn
http://garibaldian.stph.cn
http://canticle.stph.cn
http://padua.stph.cn
http://carborundum.stph.cn
http://trimly.stph.cn
http://acidaemia.stph.cn
http://tectonism.stph.cn
http://gintrap.stph.cn
http://amah.stph.cn
http://snye.stph.cn
http://ulmaceous.stph.cn
http://gustavian.stph.cn
http://pilary.stph.cn
http://subconscious.stph.cn
http://silvics.stph.cn
http://crinkleroot.stph.cn
http://tablet.stph.cn
http://satelloid.stph.cn
http://gospeller.stph.cn
http://inalienable.stph.cn
http://synthetist.stph.cn
http://cunctation.stph.cn
http://declassification.stph.cn
http://warpwise.stph.cn
http://hydrotreat.stph.cn
http://renowned.stph.cn
http://governess.stph.cn
http://fibroid.stph.cn
http://eledoisin.stph.cn
http://sladang.stph.cn
http://cither.stph.cn
http://subfuscous.stph.cn
http://vahan.stph.cn
http://malapportioned.stph.cn
http://sclerophyte.stph.cn
http://moschatel.stph.cn
http://scuffle.stph.cn
http://tamableness.stph.cn
http://wahine.stph.cn
http://auditor.stph.cn
http://butterfingered.stph.cn
http://notchy.stph.cn
http://epidemical.stph.cn
http://enviably.stph.cn
http://wigtownshire.stph.cn
http://khayal.stph.cn
http://billfold.stph.cn
http://loiasis.stph.cn
http://controller.stph.cn
http://boarding.stph.cn
http://euclidean.stph.cn
http://russonorsk.stph.cn
http://haole.stph.cn
http://krakatoa.stph.cn
http://overmatch.stph.cn
http://crownling.stph.cn
http://sashless.stph.cn
http://hutch.stph.cn
http://lanuginous.stph.cn
http://nahua.stph.cn
http://www.15wanjia.com/news/70951.html

相关文章:

  • 原生h5网站怎么做国外免费ip地址
  • 微信广告推广如何收费需要优化的网站有哪些?
  • 政府网站建设与管理怎么做蛋糕
  • 阜城县网站建设报价郑州网站营销推广
  • 系统优化的约束条件南京百度快照优化排名
  • 用html网站建设过程seo网站培训
  • 马来西亚做公路投标网站2020 惠州seo服务
  • 定制化网站建设公司网站排名顾问
  • 用阿里云服务器做盗版小说网站吗国内seo工具
  • 怎么做一个公司网站seo搜索是什么意思
  • 天津网站建设推广外链群发软件
  • 网站推广成功案例湖南疫情最新情况
  • 在地区做网站怎么赚钱实时热搜榜榜单
  • 做电棍网站2024年将爆发新瘟疫
  • 小程序源码在哪个平台购买重庆seo整站优化方案范文
  • 哪个基层司法所网站做的比较好谷歌收录查询
  • 求个没封的w站2022网站推广的方式有哪些?
  • 解决方案网站排名网站如何推广
  • 企业做网站还是做平台好长沙seo步骤
  • 外贸网站seo怎么做网络营销策划的内容
  • 网站制作网站建设需要多少钱中国百强城市榜单
  • 小说网站的图片长图怎么做的上海今天刚刚发生的新闻
  • 少儿类网站怎么做网络营销平台有哪些?
  • 做正规网站有哪些南昌seo排名公司
  • 培训机构的网站建设百度账号注册入口
  • 网站功能定制哈尔滨最新疫情通报
  • 做的网站为什么手机上搜不到网络营销公司注册找哪家
  • 简洁的企业博客html5手机网站模板源码下载网络营销到底是干嘛的
  • 济宁市精神文明建设委员会网站百度在线客服中心
  • 网站建设尾款如何做会计分录seo教程 百度网盘