auto:用来声明自动变量。它是存储类型标识符,表明变量(自动)具有本地范围
auto让编译器通过初始值来推算变量的类型
auto常见于for循环
(以string s为例)
1:for(auto x:s)
表示对s中逐个元素的复制引用(类似于将数据结构传入void函数中不加“&”)
这表明对x操作并不会影响s中逐个元素的值
string s = "hello";
for (auto i : s )
{i = toupper(i);} //改变成大写,不影响s的值
cout<<s<<endl; //s的值仍然还是 hello
2:for(auto &x:s)
表示对s中逐个元素的直接引用,这也意味着对x进行的操作会改变s中逐个元素。
string s = "hello";
for (auto &i : s ) //书上说i 是char类型,那s[n]呢?
i = toupper(i); //改变成大写,影响s的值
cout<<s<<endl; //s的值变成HELLO