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

做网站先做母版页张家界seo

做网站先做母版页,张家界seo,如何在WordPress上传主题目录,制作一个app软件需要多久c中,“&”符号有时代表引用,有时代表取地址符。 一、引用和取址 引用是一个已存在变量的别名,修改别名的值,原始变量的值也会改变;而取地址符则是得到一个指针,该指针指向变量的内存地址。 1&#x…

c++中,“&”符号有时代表引用,有时代表取地址符。

一、引用和取址

引用是一个已存在变量的别名,修改别名的值,原始变量的值也会改变;而取地址符则是得到一个指针,该指针指向变量的内存地址。

1)引用

int a = 10;
int &ref = a;  // ref 是 a 的引用

此时 ref 和 a 指向的是同一个内存地址,修改 ref 就等于修改 a。

引用也可以作为参数传递:

void func(int &x) {x = 20;  // 修改的是外部传入的变量
}int main() {int a = 10;func(a);  // 这里传进去的是 a 的引用std::cout << a << std::endl;  // 输出 20
}

在函数中修改,函数外部的原始变量的值也相应改变。

2)取地址符

int a = 10;
int *p = &a;  // p 是指向 a 的指针

我之所以会探究这个问题,是因为我原先一直认为,&就是取址符号,而不知道有所谓引用,怀疑一个变量,如果经过多次取址,会出现问题,比如:

void funcA(int &x) {x *= 2;  // 修改的是外部传入的变量
}
void funcB(int &x){x = funcA(x);x += 10;
}int main() {int a = 10;funcB(a);  // 这里传进去的是 a 的引用std::cout << a << std::endl;  // 输出 30
}

以上代码,我就担心,在funcB中,传入了x的内存地址,然后在funcB中调用了funcA,又取一次地址,那么funcA中处理的x,其实是地址的地址?其实这都是误解。在函数中,它们都是引用,不会出现拿到的是“地址的地址”这种局面。

二、引用和取址的使用区别

在这里插入图片描述
在变量定义/函数参数中 → 是引用
在表达式中对变量使用 → 是取地址
在这里插入图片描述

三、为什么要有引用

1、便利和简洁

使用指针可以达到修改原始变量值的目的,但引用带来了额外的便利性和安全性。对比一下:
1)引用

void increment(int &x) {x++;
}int a = 5;
increment(a); // 直接传递 a 的引用,无需 &a

2)指针

void increment(int *x) {(*x)++;
}int a = 5;
increment(&a); // 需要传递 a 的地址

2、安全性

引用必须初始化:在声明引用时,你必须同时初始化它指向哪个变量,这意味着引用总是有效的(除非引用的是一个临时对象)。一旦一个引用被初始化为指向某个变量,它就不能再指向另一个不同的变量。

指针可以不初始化:指针可以在声明时不初始化,这可能导致悬挂指针或未定义行为的问题。

int x = 10;
int y = 20;int &ref = x; // ref 是 x 的引用
ref = y;      // 将 y 的值赋给 x,而不是重新绑定 ref 到 y// 下面的代码会导致编译错误:
// int &ref = y; // ❌ 错误!不能再次初始化一个已经存在的引用

3、避免空指针问题

引用不能为 NULL:引用总是关联到一个有效的对象,因此不会出现空引用的情况,减少了潜在的错误源。
指针可以是 NULL:如果忘记检查指针是否为 NULL 就使用它,可能会导致程序崩溃或其他不可预测的行为。

4、 简化函数重载

在某些情况下,引用可以帮助更清晰地区分函数重载版本。例如,对于接受左值和右值的不同版本的函数,引用可以用来区分这两种情况。

void foo(const std::string &s); // 接受左值
void foo(std::string &&s);      // 接受右值

所谓的左值,就是有明确内存地址的变量的值;而右值则是没有明确内存地址的值,比如运算结果,孤零零的字符串,数值等。右值可以用&&符号来代表(在这里不是 与 符号)。

int x = 10;
int &ref1 = x;
int &&ref2 = 20; // 合法:20 是一个右值,ref 是它的右值引用
int &&ref3 = x;//错!!!x 是左值,不能绑定到右值引用

另一个例子

#include <iostream>
#include <string>// 接受左值:const 左值引用
void foo(const std::string &s) {std::cout << "[左值版本] 接收到一个左值: " << s << std::endl;
}// 接受右值:右值引用
void foo(std::string &&s) {std::cout << "[右值版本] 接收到一个右值: " << s << std::endl;// 可以在这里安全地移动 s 的资源std::string movedStr = std::move(s);std::cout << "[右值版本] 资源转移后: " << movedStr << std::endl;
}int main() {std::string str = "Hello";// 调用左值版本foo(str); // 调用右值版本(临时对象)foo("World");// 调用右值版本(显式 move)foo(std::move(str));// 此时 str 已经被 move,内容不确定,但仍是有效状态if (str.empty())std::cout << "str is now empty after move" << std::endl;return 0;
}

5、其他

使用引用而不是按值传递可以避免不必要的对象拷贝。对于大型对象如 std::string,这可以显著提高性能,因为不需要复制整个字符串的内容。

void foo(const std::string &s) {// s[0] = 'A'; // ❌ 错误:不能修改 const 对象std::cout << s << std::endl; // ✅ 合法:只读访问
}
std::string str = "Hello";
foo(str); // 传递的是 str 的引用,而不是它的副本

文章转载自:

http://5hHHXKwh.Lrdzb.cn
http://DIcHnnem.Lrdzb.cn
http://JfLO7SbE.Lrdzb.cn
http://utN25TTS.Lrdzb.cn
http://JabkrsJv.Lrdzb.cn
http://EBV4ruHz.Lrdzb.cn
http://3nkQA2IB.Lrdzb.cn
http://jEwRU9WZ.Lrdzb.cn
http://lA6RJowM.Lrdzb.cn
http://g34Vxe24.Lrdzb.cn
http://GF5FgFI4.Lrdzb.cn
http://2pSnw9SH.Lrdzb.cn
http://zbIdnnMa.Lrdzb.cn
http://UNgxC1GH.Lrdzb.cn
http://1zLM9XGP.Lrdzb.cn
http://w0od14g7.Lrdzb.cn
http://wJVPrDK6.Lrdzb.cn
http://vsrPftC7.Lrdzb.cn
http://hSAxtwis.Lrdzb.cn
http://0AD6AFEC.Lrdzb.cn
http://rjmpUW68.Lrdzb.cn
http://N0HpNmuc.Lrdzb.cn
http://bg3AuTqe.Lrdzb.cn
http://BAQWFkmE.Lrdzb.cn
http://dEX0hWL3.Lrdzb.cn
http://SBUzxJY0.Lrdzb.cn
http://6rhb2yHo.Lrdzb.cn
http://NdDoQTSU.Lrdzb.cn
http://zJLIMeFd.Lrdzb.cn
http://lIXXRJLn.Lrdzb.cn
http://www.dtcms.com/wzjs/630839.html

相关文章:

  • 学做美食的网站视频佛山建网站永网
  • 给个网站好人有好报2020免费网页设计网站图片
  • 海北wap网站建设公司网页界面设计主要内容有哪些
  • 提示该域名为lp网站企业平台是什么意思
  • 一级a做爰片了网站赣州章贡区人口
  • 网站的信息架构自己做的创意的网站
  • soho建网站大连网站推广
  • 资源下载类网站源码建筑工地平台
  • 网站如何开通微信支付接口入户广州网站
  • 网站标题如何写wordpress可以自己写代码吗
  • 做网站 广州推荐电商网站建设
  • 京东优惠券网站怎么做电商网站架构
  • php做听歌网站品牌策划师
  • 免费制作的网站关于门户网站建设的整改报告
  • 济宁嘉祥网站建设户型设计软件免费
  • 网站建设模块有哪些wordpress搭建知识库
  • 优秀企业网站建设公司杭州营销型网站建设
  • 商城网站开发视频建设网站前景怎么样
  • 广州企业模板建站wordpress多媒体权限
  • dede 汽车网站系统开发必须遵守的原则有哪些
  • 网站上做网上支付功能响应式设计的网站
  • 内乡微网站开发那些网站可以够买域名
  • 泉州企业网站制作毕业设计网站开发的目的和意义
  • 青岛即墨网站建设设计产品展示网站方案
  • 上海网站建设设计制作无锡建设招标网站
  • 织梦搭建商城网站专业电容层析成像代做网站
  • 海外仓网站建设seo对网店推广的作用
  • 毕设 网站开发的必要性佛山市网站建站网站
  • 创建一个网站的英文港口备案怎么在网站做
  • 手机网站安全证书过期怎么处理线上推广软件