C++中基于范围的for循环使用要点

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 05:04   500   0

基于范围的for循环中可通过引用修改数组元素中的值,直接修改只是修改副本,原始数组数据不变。

 // 可以看出在for循环中直接修改是不起作用的,原始数组不改变。
    int arr[] = { 1,2,3,4};
 for (int x : arr)  // 没有使用引用
 {
  x = x * 2;  // 尝试修改数组元素值
  cout << "修改数组元素值:" << x << endl;
 }

 for (int x : arr)
 {
  cout << "修改后实际数组元素值:" << x << endl;
 }
 //修改数组元素值:2
 //修改数组元素值:4
 //修改数组元素值:6
 //修改数组元素值:8
 //修改后实际数组元素值:1
 //修改后实际数组元素值:2
 //修改后实际数组元素值:3
 //修改后实际数组元素值:4
 //请按任意键继续. . .
**********************************************************************
下面是加上引用后的效果
**********************************************************************
 //基于范围的 for 循环执行时,其范围变量将仅包含一个数组元素的副本。
 //因此,不能使用基于范围的 for 循环来修改数组的内容,除非将范围变量声明为一个引用。
 //引用变量是数组元素的一个别名,任何对于引用变量的修改都将实际作用于别名所代表的数组元素的值。
 for (int &x : arr)  // 使用引用解决了修改原始数组的问题
 {
  x = x * 2;  // 尝试修改数组元素值
  cout << "修改数组元素值:" << x << endl;
 }

 for (int x : arr)
 {
  cout << "修改后实际数组元素值:" << x << endl;
 }
 //修改数组元素值:2
 //修改数组元素值:4
 //修改数组元素值:6
 //修改数组元素值:8
 //修改后实际数组元素值:2
 //修改后实际数组元素值:4
 //修改后实际数组元素值:6
 //修改后实际数组元素值:8
 //请按任意键继续. . .

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP