这个符号特别容易混淆, 因为在C++中, &有两种不同用法:

  1. 获得变量地址
  2. 引用传递

第一个例子,

int main()
{std::string s = "Hello";std::string*p = &s;std::cout << p << std::endl;std::cout << *p << std::endl;return 0;
}0x7ffd05129510
Hello
[Finished in 0.2s]

例子中, 变量p使用*声明为指针, 将变量s的地址通过&符号赋值给p.

int main()
{std::string s = "Hello";std::string &r = s;std::cout << s << std::endl;std::cout << r << std::endl;r = "New Hello";std::cout << s << std::endl;std::cout << r << std::endl;std::cout << &s << std::endl;std::cout << &r << std::endl;std::cout << (&s == &r) << std::endl;return 0;
}Hello
Hello
New Hello
New Hello
0x7ffc844cc660
0x7ffc844cc660
1
[Finished in 0.2s]

例子中, 变量r是变量sreference, 在内存空间中指代相同的位置.
&可以用于函数变量引用声明,

void foo(std::string& str)
{str[0] = 'a';std::cout << str << std::endl;
}
int main()
{std::string s = "Hello";foo(s);return 0;
}

在这个例子中, 变量str在函数foo中是变量s的 reference, 所有对str的操作, 相当于对s的操作.

C++中的取地址符()相关推荐

  1. 取地址符和解引用符的区别_(&)和解引用(*)运算符的地址以及C中的指针...

    取地址符和解引用符的区别 Here, we are discussing about the two most useful operators with the pointers, why and ...

  2. c语言函数变量地址符,C语言中取地址符做函数形参?—— 引用的讨论

    取地址符&做函数形参? C语言强大且危险 引入 这个问题花去了整整一天的研究. 先看一段严蔚敏的<数据结构>中栈的例程: 这里面的&S第一遍看的时候想当然的认为是取了SqS ...

  3. C语言中 指针变量 取地址符的用法 *指针变量名的用法

    文章目录 总结 Intro Code 图示 总结 众所周知,内存可以看成一个一个相邻的格子(类比Excel),而数据就存储于这些格子之中(size大的变量占用格子数多,size小就占用小).而每个格子 ...

  4. 【重温经典C语言】~c语言中%x、%c、%d、%x等等等、c语言取地址符的作用、C语言中的 联合体

    本章目录: 1. c语言中%x.%c.%d.%x等等等 2. c语言取地址符&的作用 3. 了解 C语言中的 联合体 3.1 什么是联合体? 3.2 定义 3.2.1 举例 3.3 初始化联合 ...

  5. 变量与指针、取值符与取地址符

    变量与指针.取值符与取地址符 一.基础知识 二.实例 其他 by HPC_ZY 也是偶然,在一个项目中需要多次交换二维数组中的值,逐个操作确实耗时,就想能不能利用指针操作快速交换.成功后写此文,记录分 ...

  6. C语言加取址符的作用,C语言中指针和取地址符的关系

    一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...

  7. c语言地址符作用,C语言中指针和取地址符的关系

    一 概念定义: 严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址. 指针原理: 其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放 ...

  8. C++ 中的:“引用” 和“取地址符”的区别和作用

    引用 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. &作为引用的时候,必须在定义时候就进行初始化,若不进行初始化则会编译报错. int N; int &r ...

  9. golang中new、make及取地址符()

    new简介及使用方式 new() 用于返回类型指针,这个操作:分两步,第一步:初始化一个变量为零的值,第二步:生成一个指向类型变量的地址. &Type 返回类型变量的地址,这个操作:分两步,第 ...

  10. 对字符数组输入输出数组名是否加取地址符的一些理解

    字符数组名的两个含义: 定义了字符型数组char name[10].name有两个含义: 一个是代表着name这个数组第一个位置的地址,也就是name[0]的地址.可以说name就等价于&na ...

最新文章

  1. 微信小程序---导航(navigator)
  2. [Windows编程] 监视DLL装载/卸载
  3. 成功解决ValueError: Data is not binary and pos_label is not specified
  4. php mysql生日提醒_基于AIML的PHP聊天机器人
  5. gre可以用计算机,GRE数学能用计算器吗
  6. (一个)AngularJS获取贴纸Hello World
  7. 单位脉冲信号与单位冲激信号的区别
  8. 通报批评!国家基金委公布2021年查处的不端行为案件处理决定(第二批次)
  9. quick-cocos2d-x for mac开发环境安装配置
  10. 5亿人都在用的拼多多还在亏损,百亿补贴仍将继续
  11. Unity3d Material(材质) 无缝拼接
  12. javascript循环事件只响应最后一次的问题处理
  13. 关于代码整理重构小记
  14. delphi中tidtcpserver如何给指定的客户端发送数据_你来讲下Netty通信中的粘包、拆包?...
  15. 升级Linux(Ubtun/CentOS)的OpenSSL(openssl-1.0.1h.tar.gz)
  16. Linux的环境变量总结
  17. 【jmeter安装】jmeter下载安装超详细简单步骤
  18. IOS平台下的音视频即时通讯
  19. 腾讯因“在岗时间不满8小时”辞退41岁员工,遭追讨1200多万
  20. java清空表格怎么实现_Java 创建、删除、操作PPT中的表格

热门文章

  1. vant-list上拉加载onload事件触发多次
  2. 在Word中自定义多级列表样式
  3. python一维列表变二维列表_使用Python轻松应对一维表与二维表相互转换
  4. Hello I am whiter. Nice to meet you!!!
  5. python zip 压缩文件夹
  6. java编程 编写求解九宫格_java编程-九宫格问题
  7. tif怎么转换成jpg格式
  8. win7访问linux共享没有权限设置,局域网共享时提示:你没有权限访问,请与网络管理员联系...
  9. smss,lsass, http://laji.xrlyy.com病毒处理
  10. (JavaScript)Mixin 模式