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

行业门户网站设计做推广网站那里好

行业门户网站设计,做推广网站那里好,wordpress图片轮播,网页制作与网站建设技术大全 pdfC中的引用 上节说到#xff0c;变量名实际上是一段连续存储空间的别名。很显然我们可以将其命名为其它名字#xff0c;就像我们有乳名、小名一样。 C引入了引用的概念。 引用可以看作一个已定义变量的别名引用的语法 type name variate;普通引用在声明时必须用其它的…C中的引用 上节说到变量名实际上是一段连续存储空间的别名。很显然我们可以将其命名为其它名字就像我们有乳名、小名一样。 C引入了引用的概念。 引用可以看作一个已定义变量的别名引用的语法 type name variate;普通引用在声明时必须用其它的变量进行初始化。用值进行初始化也不行(即inta 1; 会报错)引用作为函数参数时声明时候不需要进行初始化 #include stdio.h int main(int argc, char *argv[]) {int original 1;int new_name original;//c语言无引用的概念用gcc会编译报错。new_name 2;printf(original %d, new_name %d\n, original, new_name);printf(original %p, new_name %p\n, original, new_name);return 0; }上面程序中int new_name original; 用original别名叫new_name当new_name赋值后对于的存储空间的值也会变化故original 的值和new_name值一样。相应的他们的内存地址打印也相同如下图 引用的意义 引用作为其它变量的别名而存在因此在一些情况下可以代替指针引用相对于指针来说具有更好的可读性和实用性 #include stdio.h//指针实现交换函数 void swap1(int* pa, int* pb) {int c *pa;*pa *pb;*pb c; }//引用实现交换函数 void swap2(int a, int b) {int c a;a b;b c; }int main(int argc, char *argv[]) {int var_1 8;int var_2 10;swap1(var_1, var_2);printf(after swap1, var_1 %d, var_2 %d\n, var_1, var_2);swap2(var_1, var_2);printf(after swap2, var_1 %d, var_2 %d\n, var_1, var_2);return 0; }上面程序中引用实现的交换函数可读性更好。 swap1(var_1, var_2); 如果不看函数实现像是交换两个变量的地址。 swap2(var_1, var_2); 从函数写法像是交换两个变量。不像指针可读性差。 const 引用 在C中可以声明const 引用,语法 const Type name var;const 引用让变量拥有只读属性注意只有定义的别名拥有只读属性不会影响到正名。 #include stdio.hint main(int argc, char *argv[]) {int a 8;const int b a;//变量a没有只读属性当前只有变量b才有只读属性。//b 10; //打开这里报错 error: assignment of read-only reference ‘b’a 20; //原来的变量还是可以赋值不拥有只读属性printf(a %d, b %d\n, a, b);int *p (int*)b;*p 10; printf(a %d, b %d\n, a, b); return 0; }当使用常量对const引用进行初始化时const int a 1; 我们知道直接使用常量赋值普通引用编译器会报错 int a 1 会报错。C编译其会为常量分配空间并将引用名作为这段空间的别名使用常量对const引用初始化后将生成一个只读变量而不是真正的常量 #include stdio.hint main(int argc, char *argv[]) {const int a 8; //这里编译器会为这个常量分配存储空间。去掉const 编译器会报错 cannot bind non-const lvalue reference of type ‘int’ to an rvalue of type ‘int’int *p (int *)a;*p 10;//改变常量空间的地址内容printf(a %d\n, a); return 0; }引用的实现方式 引用有自己的存储空间吗下面通过一个实例来验证。 #include stdio.hstruct C {int a;//等价于 int* const a;int b;//等价于 int* const b; };int main(int argc, char *argv[]) {printf(sizeof(C) %ld\n, sizeof(C)); return 0; }两个int型引用组成的结构体打印的正好是2个int型变量的长度从编译器行为来看引用有自己的大小。 引用在C中的内部实现是一个常指针 type name 等价于 type* const name。 type 指的是变量的类型也可以指定义的新class类型 例如char a 等价于 char* const a .C编译器在编译过程中使用常指针作为引用的内部实现因此引用占用的空间大小与指针占用空间大小相同。从使用者的角度引用会让人误以为只是一个别名没有自己的存储空间。这是C为了实用性而做出的细节隐藏。 下面再用一个例子来说明引用有自己的存储空间 #include stdio.hstruct T {int a;int b;int c; };int main(int argc, char *argv[]) {int a 1;int b 2;int c 3;T va {a, b, c};printf(a %p\n, a); printf(b %p\n, b);printf(c %p\n, c);printf(va %p\n, va);printf(sizeof(va) %ld\n, sizeof(va)); return 0; }从打印结果来看引用a,b,c都有自己的独立存储空间va变量的空间为24字节变量与变量内部的引用在内存上也是独立的。 当函数返回值为引用时 返回栈变量 1、不能成为其它引用的初始值 2、不能作为左值使用返回静态变量或全局变量 1、可以成为其他引用的初始值 2、即可作为左值使用也可作为右值使用 #include stdio.hint f1() {static int a 8;return a;//返回静态局部变量a的内存空间f1()函数作为该内存空间别名 }int g1() {int b 6;return b;//返回局部变量b的内存空间f1()函数作为该内存空间别名 }int main(int argc, char *argv[]) {int c f1();//返回静态局部变量a的存储空间别名给Cint d g1();//局部变量b内存空间别名给到引用d. d代表局部变量b的内存空间。f1() 10;//f1() 作为静态局部变量a的别名然后给内存空间赋值10.相当于给静态局部变量赋值为10.printf(c %d\n, c); printf(d %d\n, d); //打印被释放的空间别名值出现段错误。printf(f1() %d\n, f1());//去除掉上一行语句后这里打印10. return 0; }当引用返回的是局部变量时局部变量所在的函数运行完成会释放掉该局部变量而我们去访问 被释放的引用存储空间时会出现不可控的情况这段内存有可能被系统回收给其他变量使用。 在g上printf(“d %d\n”, d); 编译器发生了警告当运行程序时访问了被释放的存储空间别名出现段错误。某些编译器和平台上会打印出随机值。 回答上一节的问题,C对三目运算符做了什么 当三目运算符可能返回值都是变量时返回的值是变量的引用。当三目运算符可能返回中有常量时返回的是值。 int a 6; int b 8; ( a b ? a : b) 9;//语句正确返回a 或者b的引用可以作为右值使用。 ( a b ? a : b) 9;//语句错误返回值中有常量返回的是值不能作为右值使用。 小结 C中的引用可以看作变量的别名来使用C中的常引用可以使得一个变量拥有只读属性C中的常引用可以用常量初始化而得到一个只读变量C中引用的本质是一个指针常量 思考 在C中不允许定义引用数组 Type array[10],为什么 如何定义一个数组的应用如何定义一个函数的引用 数组引用和数组指针有什么区别函数引用和函数指针又有什么区别
http://www.zqtcl.cn/news/282802/

相关文章:

  • iis5.1 新建网站舆情系统的作用
  • 北京国互网网站建设公司东莞寮步搬家公司
  • 学校门户网站是什么意思做网站的意义大不大
  • 做网站卖酒网站内容建设的布局和结构
  • 效果图在哪个网站可以找比较好wordpress网站背景设置
  • 专业整站优化韩国设计公司网站
  • 网站建设与规划学的心得体会WordPress主题启用出现错误
  • 网站建设 资讯宁波东方论坛首页
  • 东莞网站制作有名 乐云践新郑州官方网
  • 网站开发经理具备什么知识调查问卷网站建设
  • 做购买网站企业宣传片制作拍摄
  • logo艺术字转换器徐州seo企业
  • 禹城网站建设公司湖州城市投资建设集团网站
  • 上海城乡住房建设厅网站asp网站怎么做301定向
  • 惠州免费网站建设上海家装10强名单
  • 新手学习做网站电子商务网站建设与维护实验报告
  • 网站建设制作设计推广上海职业技能培训机构
  • 网站不同颜色网站无障碍的建设方面空缺
  • 手机网站织梦模板it初学者做网站
  • asp做的网站怎么发布企业黄页网站源码
  • 在云服务器上搭建网站云端视差wordpress企业主题破解版
  • 英德市住房城乡建设网站图片设计公司
  • 网站建设分金手指专业十七wordpress 审核
  • 怎么欣赏一个网站设计图网站传送门怎么做
  • 网站有什么组成上海做推广网站
  • 网站上传大马后怎么做管理咨询公司口号
  • 网站集约整合建设交流雅虎网站提交入口
  • 网站安全建设必要性网站登录页面
  • 鄂州网站推广做区块链在哪个网站
  • 网站什么内容网站安全性设计