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

阿里 做网站杭州模板建站代理

阿里 做网站,杭州模板建站代理,手机网站的域名,网站建设怎样设置动态背景目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量#xff0c;而是给已经存在的变量取一个别名#xff0c;编译器不会给引用变量开辟内存空间#xff0c…目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量而是给已经存在的变量取一个别名编译器不会给引用变量开辟内存空间它和它引用的变量共用同一块内存空间。简单来说引用就是起别名例如水浒传中林冲又名豹子头这就是取别名同时林冲死了也就意味着豹子头死了两者指向的都是同一个人。 用法类型引用别名 应用对象 int main() {//对a起别名b和cint a 0;int b a;int c a;cout a endl;cout b endl;cout c endl;cout a endl;cout b endl;cout c endl;return 0; } 2.引用的特性 引用在定义的时候必须初始化。因为引用是一个别名它的存在建立在主体存在的基础上也就是说必须引用一个已经存在的对象否则会引起编译报错。 一个变量可以有多个引用。正如一个人可以有多个外号但这些引用都指向同一个对象。 引用一旦引用另一个实体就不能再引用其他实体。引用一旦建立就不能更改为其他实体的引用这种“偷外号”的行为是不允许发生的。 允许引用其他引用。例如int b a,int c b;此时就是c引用了b但b也是引用的a,此时b,c都是a的别名。 int a 0; int b a; int c 20; //b已经引用a的情况下不能更改为引用c //以下直接看作赋值 b c; cout a endl; cout b endl; cout c endl; 3.引用的使用场景 引用在实践中主要是用于引用传参和做返回值能够减少拷贝提高效率同时能够改变引用对象和被引用对象。 引用传参跟指针传参的功能是类似的但引用传参看着更简洁也更方便。例如对于Swap函数的实现而言引用传参可以这样实现 void Swap(int a, int b) {int tmp a;a b;b tmp; } 引用返回值就要看使用场景了例如在栈Stack的实现中有一个函数叫STTop用于得到栈顶元素返回值是int只是一个数值的拷贝具有常性无法做左值即无法进行修改。 但若返回值改为int那么此时就是对返回的栈顶元素取别名那么就可以进行修改了。如下所示 typedef int STDatatype; typedef struct Stack {int* a;int capacity;int top; }ST;//直接引用传参 void STInit(ST rs, int n 4) {rs.a (STDatatype*)malloc(sizeof(STDatatype) * n);rs.capacity n;rs.top 0; }void STPush(ST rs, STDatatype x) {rs.a[rs.top] x;rs.top; }//int STTop(ST rs) //{ // return rs.a[rs.top - 1]; //}int STTop(ST rs) {return rs.a[rs.top - 1]; } int main() {ST s;STInit(s,4);STPush(s, 1);STPush(s, 2);STTop(s) 4;return 0; } 4.const引用 const引用可以用来引用普通对象普通对象是能读能写但const引用后引用是只读不写注意对象本体还是可以写的只是引用别名用const修饰了不能写这叫权限缩小。 const引用也可以用来引用const对象此时就叫权限平移因为引用和本体的权限是相同的都被const修饰只能读不能写。 普通引用不能用来引用const对象这是权限放大。原本本体就不能被修改但引用后反而能被修改了这合理吗这种写法是禁止的也会进行如下报错。 引用临时对象需要使用const引用。什么是临时对象临时对象出现在以下这几种情况 类型转化如下double类型转化为int引用 double a 1.1; const int b a; 表达式结果如下a*3就是一个表达式需要临时对象储存结果 int a 1; const int b a*3; 5.引用和指针的区别 引用必须初始化指针建议初始化但语法上不是必须的引用不开辟空间但指针是储存一个变量地址需要开空间初始化后引用不可修改指向对象而指针可以修改指向对象引用直接访问指向对象指针需要解引用才能访问sizeof时引用是引用对象类型的大小而指针始终是地址空间所占的字节个数32位下是4字节64位下是8字节引用更加安全指针容易出现空指针和野指针的问题 二.inline 使用inline修饰的函数就是内联函数编译时编译器会将其在调用的地方展开这样调用内联函数就需要建立栈帧了可以提高效率。inline就是为了替代C语言中宏函数而实现的宏函数实现很复杂而且容易出错不方便调试inline才运营而生。 当然inline对于编译器而言只是一个建议是否展开取决于编译器本身一般来说inline适用于频繁调用的短小函数对于递归函数代码较多的函数就算加上inline编译器也会选择忽略。 line不建议声明和定义分离到两个文件分离会导致链接错误。但可以在同一个项目的不同源文件内定义函数名相同但实现不同的inline函数。 注class类中的函数默认是inline 三.nullptr 在C语言中NULL其实是一个宏它的定义是 #ifndef NULL#ifdef __cplusplus#define NULL #else#define NULL ((void *)0)#endif#endif 那么在使用时就会产生歧义例如在调用空值的指针时就有可能调用到int类型的重载函数例如 void f(int x) {cout f(int x) endl; } void f(int* x) {cout f(int* x) endl; } int main() {f(0);f(NULL);return 0; }//结果是两次都是调用的f(int x) 因此在C11中引入了nullptr这是一个特殊的关键字它可以转化为任意类型的其他指针类型但不能转化为整数类型这就避免上图的出错。  看到这里就能对有了一定的C基础知识但还不算入门接下里我会持续更新类和对象的内容那才是面向对象编程的精髓。感谢观看欢迎关注。
http://www.hkea.cn/news/14557343/

相关文章:

  • 塔城市建设局网站粤嵌培训机构官网
  • 福建住房和城乡建设部网站首页网站备案流程慢
  • 中国旅游预订网站的建设始于哪一年纯静态网站 维护
  • 软件公司网站网店设计是什么
  • 网站改版换域名制作详情页用什么软件
  • 通过网站赚钱杭州网站设计手机
  • 哪个网站做推广效果好301wordpress
  • 自媒体素材视频网站模板建站自适应
  • 鄞州seo整站优化服务免费简历制作网站推荐
  • 本地网站做淘宝客网站获取访问者qq号码
  • 郑州做网站价格望野亭
  • 江宁区建设工程局网站郑州网站权重
  • 网站如何连接微信支付宝吗大庆门户网站
  • 程序员做一个网站多少钱徐州建设网站的公司
  • 罗湖网站-建设深圳信科网站上关键词的推广怎么做
  • 网站备案需要当面核验哪些信息网页制作三合一第二版
  • 成都手机端建站模板新品发布会海报
  • 建设网站书籍pdf下载网站外包 博客
  • 网站建设多久西宁建设网站
  • 网络营销实验网站建设心得西安优惠电商平台网站
  • 做的较好的拍卖网站网站建设系统总体结构功能图
  • 新浪博客网站游戏怎么制作
  • 网站分成几种类型centos 7.2 wordpress
  • 服务器不支持做网站是什么意思python基础教程编程题
  • 可以做兼职的网站有哪些工作室搭建wordpress需要php环境吗
  • 官方网站数据如何做脚注云网站建设 优帮云
  • 天津网站开发培训wordpress logo 修改
  • 福田网站建设的工具网站建设找盛誉网络
  • 杨浦网站建设丹东建设安全监督网站
  • 开发公司房屋维修办法网站建设丶seo优化