C++primer 第五版,第三章出现了此段程序,求解读
附源码:
代码1:
#include<iostream>
#include<string>
using namespace std;
string s = "hello";
for (auto &i : s ) //i是个引用 i到底引用的是什么?
i = toupper(i); //改变成大写,影响s的值

cout<<s<<endl; //s的值是 HELLO

--------------------------------------------------------------------------
代码2:
#include<iostream>
#include<string>
using namespace std;
string s = "hello";
for (auto i : s ) //书上说i 是char类型,那s[n]呢?
i = toupper(i); //改变成大写,不影响s的值

cout<<s<<endl; //s的值是 hello

auto的类型识别仅仅是交给了编译器而已,是发生在编译阶段,而不是运行阶段。

for(auto &i:s) 
用上面代码理解 &i=s[index] i是s[index]的引用,改变i就会改变s
for(auto i:s)
用上面代码理解 char i=s[index] 用s[index]给i赋值

最新文章

  1. Tensorflow 变量的共享
  2. 微信公众平台API接口
  3. Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au
  4. 使用dynatrace+showslow进行前端性能测试
  5. jquery常用选择器
  6. 也谈OpenFlow, SDN, NFV
  7. Django中载入js和css文件
  8. eclipse Dynamic web project 工程目录
  9. Ajax及jQuery学习
  10. Oracle-07:别名,去重,子查询
  11. Linux下编辑、编译、调试命令总结——gcc和gdb描述
  12. js的RegExp
  13. 5. 支持向量机(SVM)软间隔
  14. Restframework 频率throttle组件实例-3
  15. hadoop 1.1.2和 hive 0.10 和hbase 0.94.9整合
  16. Android踩坑随笔Fragment中onActivityResult方法不被调用
  17. Mongodb 的劣势
  18. 初识 Julia
  19. 正确理解Python函数是第一类对象
  20. 实现类似tail -f file功能

热门文章

  1. 支付宝Payto接口的C#.net实现方法
  2. 超级强大的formValidator
  3. UNITY3d在移动设备上的一些优化实战(一)-概述
  4. c++对象创建带括号与无括号的区别
  5. tomcat管理端的页面安全措施
  6. func_num_args, func_get_arg, func_get-args 的区别与用法
  7. class.equals
  8. 9.10---堆箱子问题(CC150)
  9. Linux下端口被占用解决
  10. 【架构】Google的大规模集群管理工具Borg