auto x与auto &x

公羊雅达
2023-12-01

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

 类似资料: