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

做网站优化公司福州百度快速优化

做网站优化公司,福州百度快速优化,南京网站设计 联络南京乐识,网站开发周记30篇目录 1、引用 1.1 引用概念 1.2 引用特性 1.3 常引用 1.4 使用场景 1.4.1 引用做参数 1.4.2 引用做返回值 1.5 引用和指针的区别 2、内联函数 2.1 概念 2.2 特性 3、auto关键字 4、基于范围的for循环 5、指针空值nullptr 5.1 C98 中的指针空值处理 5.2 C11 …

目录

1、引用

1.1 引用概念

1.2 引用特性

1.3 常引用

1.4 使用场景

1.4.1 引用做参数

 1.4.2 引用做返回值

1.5 引用和指针的区别

2、内联函数 

2.1 概念

2.2 特性

3、auto关键字 

4、基于范围的for循环 

5、指针空值nullptr 

5.1 C++98 中的指针空值处理

5.2 C++11 中 nullptr 的优势


  本章节将延续上篇文章未讲完的内容,期待接下来的内容哦!!!

1、引用

1.1 引用概念

类型& 引用变量名(对象名) = 引用实体;
void TestRef()
{int a = 10;int& ra = a;//<====定义引用类型printf("%p\n", &a);printf("%p\n", &ra);
}

     ra是a的别名,是一个变量,占用同一块内存

    注意: 引用类型 必须和引用 实体 同种类型
1.2 引用特性
    1. 引用在 定义时必须初始化
    2. 一个变量可以有多个引用
    3. 引用一旦引用一个实体,再不能引用其他实体
1.3 常引用

    只有引用才涉及权限的变化

1.4 使用场景
1.4.1 引用做参数

    输出型参数:形参的改变会改变实参

    引用做参数不会开辟空间

 1.4.2 引用做返回值

    引用做返回值不会创建临时变量

1.5 引用和指针的区别

    引用语法层面不开空间,底层实现和指针类似

面试常考点:

2、内联函数 

2.1 概念
    以 inline 修饰 的函数叫做内联函数, 编译时 C++ 编译器会在 调用内联函数的地方展开 ,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。
    如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用
查看方式:
1. release 模式下,查看编译器生成的汇编代码中是否存在 call Add
2. debug 模式下,需要对编译器进行设置,否则不会展开 ( 因为 debug 模式下,编译器默认不会对代码进行优化,以下给出vs2022 的设置方式 )
2.2 特性
1. inline 是一种 以空间换时间 的做法,如果编译器将函数当成内联函数处理,在 编译阶段,会
用函数体替换函数调用 ,缺陷:可能会使目标文件变大,优势:少了调用开销,提高程序运
行效率。
2. inline 对于编译器而言只是一个建议,不同编译器关于 inline 实现机制可能不同 ,一般建
议:将 函数规模较小 ( 即函数不是很长,具体没有准确的说法,取决于编译器内部实现 )
是递归、且频繁调用 的函数采用 inline 修饰,否则编译器会忽略 inline特性。下图为《 C++prime 》第五版关于 inline 的建议:
     问题: 为啥内联函数可能会导致目标文件变大

3. inline 不建议声明和定义分离,分离会导致链接错误。因为 inline 被展开,就没有函数地址
了,链接就会找不到
// F.h
#include <iostream>
using namespace std;
inline void f(int i);
// F.cpp
#include "F.h"
void f(int i)
{cout << i << endl;
}
// main.cpp
#include "F.h"
int main()
{f(10);return 0;
}
// 链接错误:main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl 
f(int)" (?f@@YAXH@Z),该符号在函数 _main 中被引用

内联函数和宏函数
    相似点: 
    避免函数调用开销:都能在一定程度上避免常规函数调用时的栈帧创建、参数传递等开销,提高程序运行效率。
    代码替换:在编译或预处理阶段,都会将相关代码替换到调用处。内联函数由编译器决定是否展开替换,宏函数是在预处理阶段进行文本替换。 
    优缺点
    内联函数:优点是有类型检查和语法检查,增强了程序的健壮性,且调试方便;缺点是编译器对其展开有条件限制,当函数体复杂时可能不进行内联,同时会使代码体积增大。
    宏函数:优点是简单灵活,可定义复杂的表达式,在代码生成方面有一定的优势;缺点是没有类型检查,容易出现副作用,且在调试时难以定位问题,也可能导致代码可读性变差。

3、auto关键字 

    使用 auto 定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导 auto 的实际类型 。因此 auto 并非是一种 类型 的声明,而是一个类型声明时的 占位符 ,编译器在编 译期会将 auto 替换为变量实际的类型

4、基于范围的for循环 

void TestFor1()
{int array[] = { 1, 2, 3, 4, 5 };//让数组中的元素大小变成原来的二倍for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)array[i] *= 2;//打印数组元素for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)cout << *p << endl;
}void TestFor2()
{int array[] = { 1, 2, 3, 4, 5 };//让数组中的元素大小变成原来的二倍for (auto& e : array)e *= 2;//打印数组元素for (auto e : array)cout << e << " ";}int main()
{TestFor2();return 0;
}

5、指针空值nullptr 

5.1 C++98 中的指针空值处理

初始化方式
    在 C/C++ 编程里,为避免未初始化指针带来的错误,习惯给指针合适初值。在 C++98 中,当指针无合法指向时,常见初始化方式:

NULL的本质

NULL 本质是宏,在传统 C 头文件 stddef.h 中定义如下:

即 NULL 可能被定义为字面常量 0 ,或无类型指针 (void*) 的常量 。

使用 NULL 的麻烦

    这里 f(0) 调用 f(int) 没问题,但 f(NULL) 由于 NULL 定义的模糊性(既像 0 又像指针),可能导致编译器匹配混乱,而 f((int*)NULL) 虽然明确转化为指针类型调用 f(int*) ,但这种写法不够简洁直观 。

5.2 C++11 中 nullptr 的优势

无需额外头文件
  nullptr 是 C++11 引入的新关键字,专门表示指针空值 。使用它时,无需包含额外头文件,代码简洁性提升。

字节数特性
    在 C++11 中,sizeof(nullptr) 与 sizeof((void*)0) 所占字节数相同 。这意味着 nullptr 在内存占用等底层特性上,和传统表示空指针的方式在字节层面有对应关系。

提升代码健壮性
    相比 NULL 可能带来的歧义,nullptr 明确表示指针空值。在函数重载等场景下,能让编译器准确匹配函数,减少错误发生概率,使代码更健壮。例如之前的 f 函数调用,使用 nullptr 就很明确:

    总结来说,nullptr 作为 C++11 的新特性,解决了 C++98 中 NULL 表示指针空值的一些弊端,让指针空值的表达更清晰、准确,有助于写出更可靠的代码

http://www.dtcms.com/wzjs/179231.html

相关文章:

  • 南昌网站制作方案定制汕头网站优化
  • seo网站开发做网页的网站
  • 滨州做网站的公司新闻头条 今天
  • wordpress 多语言站点谷歌地球
  • 找人做网站维护多少钱优化排名
  • 网站怎么怎么做关键字搜索引擎营销的概念及特点
  • 免费建设物流网站站长工具 站长之家
  • 怎么做网站推广苏州seo门户网
  • 能用的网站推广普通话的意义30字
  • 如何建一个视频网站搜索推广平台有哪些
  • 海外网站营销惠州seo外包公司
  • 初中学生做那个的网站长沙正规seo优化价格
  • 镇江网站制作公司自媒体平台注册入口官网
  • 网站怎么ftp张家界网站seo
  • 网页设计背景制作seo关键字优化教程
  • 做网站可以用哪些软件怎么自己开发网站
  • 机票网站制作网络营销和电子商务区别
  • 江苏网站定制杭州网络推广有限公司
  • a站全称现在阳性最新情况
  • 桑福生物科技网站开发网络推广公司口碑
  • 上文明网站 做文明网民征文网站设计专业的公司
  • 做ctf的网站有哪些短网址链接生成
  • 如何做微信商城网站建设日喀则网站seo
  • 网站做虚假宣传有没有做处罚百度自动搜索关键词软件
  • wordpress调用阅读最多的求好用的seo软件
  • 美食网站建设的意义汽油价格最新调整最新消息
  • 外贸网站如何推广出去百度小说搜索排行榜
  • 网站建设与管理实训心得体会百度合伙人答题兼职赚钱
  • 宁波余姚网站建设广州疫情最新新增
  • 创意礼品做的比较好的网站河南做网站优化