[C++]小程序大道理(一) 引用的妙用

版权声明:未经博主同意不得转载 https://blog.csdn.net/ycwwl1993/article/details/89052371

首先我们执行如下程序:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string string="Gdkknvnqkc";
    for(auto s:str)
        s+=1;
    for(auto s:str)
        cout<<s;
    cout<<endl;
    for(auto &s:str)
        s+=1;
    for(auto s:str)
       cout<<s;
    cout<<endl;
    return 0;
}

运行结果如下:

Gdkknvnqkc
Helloworld

  从运行结果,我们可以注意到,第一个范围for对字符串 str 中的字符没有产生任何影响,但是第三个范围 for 却对原字符串产生了影响。
  这是因为第一个范围 for 将字符串中字符赋值给对象 s ;再执行 s +=1; 只是 s 的值对应的ASCII值增加1,没有对原字符串进行任何操作,所以原字符串不会发生任何改变。
  而第二个范围 for 是以引用的形式遍历字符串的字符,每一次对 s 的操作都是对原字符串的操作,所以经过第一个范围 for 的操作后,原字符串变为Helloworld。
  那么我们来思考一个问题:
  编写一个函数 swap ,在主函数中定义两个int型变量,并初始化赋值(两个变量初始化赋值不同),调用 swap 函数实现两个变量值的交换。
   这里我们推荐两种方法:一种是我们刚刚讲述的引用,将函数定义为 swap(int &x,int &y){…},另一种就是利用指针,将函数定义为 swap(int *x,int *y){…};大家不妨把程序补充完整,并与函数swap(int x,int y){…}对比。看三个函数定义方式的不同。
答案可以参考
指针、引用作函数形参的比较
更多精彩内容请关注微信订阅号“编程语言初学者”,我们会将不同网站发布的博客、推文统一发布于编程语言初学者订阅号。

编程语言初学者

编程语言初学者

猜你喜欢

转载自blog.csdn.net/ycwwl1993/article/details/89052371