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

360免费建站391199网站首页成品

360免费建站391199,网站首页成品,丽水建设厅网站,做网站公司西安前言 接上篇#xff0c;继续来学习C#xff0c;本篇内容大概有 引用#xff0c;inline 和 nullptr。 六、引用#xff1a; 6.1、引用的定义 引用不是新定义一个变量#xff0c;而是给已存在的变量取了一个别名#xff0c;编译器不会为引用变量开辟内存空间#xff0c;它…前言 接上篇继续来学习C本篇内容大概有 引用inline 和 nullptr。 六、引用 6.1、引用的定义 引用不是新定义一个变量而是给已存在的变量取了一个别名编译器不会为引用变量开辟内存空间它和它引用的变量公用一块内存空间。 类型 引用别名 引用对象 ; int main() {int a 10;int b a;//这里b是a的别名//也可以给b去别名int c b;int d c;cout a endl;cout b endl;cout c endl;cout d endl;return 0; } 6.2、引用的特性 引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实体就不能再引用其他实体 int main() {//int b; 必须初始化int a 10;int b a;int c 9;b c;// bc ac ?return 0; } 6.3、引用的使用 引用在实践中主要是引用参数和引用做返回值中减少拷贝提高效率和改变对象时同时改变被引用对象时同时改变被引用对象。引用传参跟指针传参功能是类似的引用传参相对更加方便一些。引用和指针在实践中相辅相成功能有重叠性但是各有特点互相不可替代。C的引用跟其他语言的引用如java是有很大区别的除了用法最大的差别C引用定义不能改变指向而java的引用可以改变指向。在一些主要用C语言代码实现版本的数据结构教材中使用C引用代替指针传参目的是简化程序避开复杂的指针。 引用作为函数参数 void Swap(int rx, int ry) {int tmp rx;rx ry;ry tmp; } int main() {int x 1, y 9;cout x y endl;Swap(x, y);cout x y endl;return 0; } 引用作为函数返回值 例如在栈数据结构中我们取栈顶数据后直接修改 int STTop(ST rs) {assert(rs.top 0);return rs.a[rs.top]; }int main() {cout STTop(st1) endl;STTop(st1) 10;cout STTop(st1) endl;return 0; } 6.4、const 引用 可以引用一个 const 对象但是必须用 const 引用。const 引用也可以引用配套对象对象的访问权限在引用过程中可以缩小但是不能放大。         const 引用需要注意类似int rb a*3; double d 13.14; int rdd;这样一些情况下 a*3的结果保存在一个临时变量中int rd d也是类似在类型转换中会产生一些临时对象存储中间值也就是 rd 与 rd引用的都是临时对象而C规定临时对象具有常性所以这里就对权限进行了放大必须要常引用才行。         这里所说的临时变量就是编译器需要一个空间暂存表达式的求值结果时临时创建的一个未命名的对象C中把这个未命名的对象叫做临时对象。 int main() {const int a 10;//这里对a访问的权限放大//int ra a;const int ra a;//这里 改变const定义的常量//ra;//ra 0;int b 1;const int rb b;//const 修饰 引用rb 不能修改常量//rb;return 0; } 类型转换 int main() {int a 10;const int ra 30;// 编译报错: “初始化”: 无法从“int”转换为“int ”// int rb a * 3;const int rb a * 3;double d 12.34;// 编译报错“初始化”: 无法从“double”转换为“int ”// int rd d;const int rd d;return 0; } 6.5、指针与引用的关系 C中指针和引用在实践中它们相辅相成功能有重叠性但是它们也各有自己的特点互相不可替代。 在语法概念上引用是一个变量的取别名不开辟空间而指针是存储地址的变量要开辟空间。引用在定义时必须初始化指针建议初始化但是语法上不是必须的。引用在初始化引用时引用一个对象后就不能再引用其他对象而指针可以不断改变指向的对象。这里题外话引用就像纯爱战士(深情专一)。引用可以直接访问指向对象而指针需要解引用才是访问对象。sizeof 中含义不同引用结果为引用类型的大小而指针始终是地址空间所占字节个数32位平台下占4个字节64位平台下占8个字节。指针很容易出现空指针和野指针的情况引用很少出现引用使用起来相对安全。 七、inline 用inline修饰的函数叫做内联函数编译时C编译器会在调用的地方展开内联函数这样调用内联函数时就不需要栈帧了提高效率。inline对于编译器而言只是一个建议也就是说加了inline编译器也可以选择在调用的地方不展开不同的编译器关于inline什么情况展开各不相同因为C标准没有定义这个。inline适用于频繁调用的短小函数对于递归函数代码相对多的函数加上inline会被编译器忽略。 C语言实现宏函数也会在预处理的时候展开但是宏函数实现很复杂并且容易出错且不方便调试C设计inline目的就是代替C的宏函数。 inline不建议声明和定义分离到两个文件分离会导致连接出错。inline被展开就没有了函数的地址链接时会报错。 VS中debug版本默认不展开inline方便调试如果想要进行展开可以进行一下设置 八、nullptr 在C语言中空指针是NULL但是其实NULL是一个宏在stddef.h中 #ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif #endif C中NULL可能被定义为字面常量 0或者C语言中被定义为无类型的指针void*的常量。这样在使用时都会有一些不可避免的麻烦C 11 引入了nullptrnullptr是一个特殊的关键字nullptr是一种特殊类型的字面量它可以转换成任意类型的指针类型使用nullptr定义空指针可以避免类型转换的问题因此nullptr只能被隐式的转换成指针而不能被转换成整数类型。 #includeiostream using namespace std; void f(int x) {cout f(int x) endl; } void f(int* ptr) {cout f(int* ptr) endl; } int main() {f(0);/*本想通过f(NULL)调用指针版本的f(int*)函数但是由于NULL被定义成0调用了f(intx)。*/f(NULL);f((int*)NULL);//f((void*)NULL);// 编译报错error C2665: “f”: 2 个重载中没有一个可以转换所有参数类型// f((void*)NULL);f(nullptr);return 0; } 感谢各位大佬支持
http://www.hkea.cn/news/14484271/

相关文章:

  • 北京信管局 网站备案世界500强企业排名中国名单
  • h5网站欣赏运动鞋网站的建设风格
  • 镇江市建设局网站智能免费建站
  • 网站结构优化包括什么常州微信网站建设效果
  • 东莞专业微网站建设价格域名制作网站吗
  • 雏鸟app网站推广免费建站的站点网站
  • vue使用于网站开发腾讯云网站模板
  • 西安优秀的集团门户网站建设企业推推蛙seo
  • icp网站域名怎么填写深圳哪个区最好
  • 网站设计怎么做才好看百度收录要多久
  • 网站外链多的危害ip分享网站
  • 网站开发进度安排文档建筑设计网上接单
  • 做门票的网站做网站要多少
  • 个人购物网站备案新手做站必看 手把手教你做网站
  • 国家企业信用信息系统(河南)郑州网站建设专业乐云seo
  • 全球电子商务网站排名wordpress 增加用户字段
  • 网站制作说明网站网页设计怎么收费
  • 网站建设分几个阶段html个人博客网页设计
  • 秀米网站怎么做推文二手房出售信息
  • 手机端网站建站如何用易语言做网站辅助
  • vps建设网站别人访问不了网站seo顾问
  • 泉州最好的网站建设公司ui设计app界面模板
  • 智慧团建网站首页关于网站建设的入门书
  • 南宁如何做百度的网站推广个人简历模板范文手写
  • 陇南市响应式网站建设com网站域名注册
  • wordpress建站什么意思高密做网站的价格
  • 赣州做网站设计找哪家自己怎么注册域名
  • 宅男做网站做企业网站需要收费吗
  • 做设计有必要买素材网站会员员工管理网站模板
  • 广东省著名商标在什么网站做自己写的网页怎么发布