前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 经典案例1例

C++ 经典案例1例

作者头像
DBA札记
发布2023-10-31 14:51:57
1390
发布2023-10-31 14:51:57
举报
文章被收录于专栏:MySQL参数系列MySQL参数系列

案例

代码语言:javascript
复制
#include <iostream>

void swapr(int & a, int & b);   // a,b are aliases for ints
void swapp(int * p, int * q);   // p,q
void swapv(int a, int b);       // a,b are new variables

int main()
{
    using namespace std;
    int wallet1 = 300;
    int wallet2 = 350;

    cout << "wallet1 = $ " << wallet1;
    cout << " wallet2 = $ " << wallet2 << endl;

    cout << "Using references to swap contents:\n";
    swapr(wallet1, wallet2); // pass vvariables
    cout << "wallet1 = $" << wallet1;
    cout << " wallet2 = $" << wallet2 << endl;

    cout << "Using pointers to swap contents again:\n";
    swapp(&wallet1, &wallet2); //pass address of variables
    cout << "wallet1 = $" << wallet1;
    cout << " wallet2 = $" << wallet2 << endl;

    cout << "Trying to use passing by value:\n";
    swapv(wallet1, wallet2);  // pass values of variables
    cout << "wallet1 = $" << wallet1;
    cout << " wallet2 = $" << wallet2 << endl;

    return 0;
}

void swapr(int &a, int &b) // use references
{
    int temp;

    temp = a;
    a = b;
    b = temp;
}

void swapp(int *p, int *q) // use pointers
{
    int temp;

    temp = *p;
    *p = * q;
    *q = temp;
}

void swapv(int a, int b)  // try using values
{
    int temp;

    temp = a;
    a = b;
    b = temp;
}

解释

这段代码演示了通过引用、指针和传值三种方式来交换两个变量的值。

首先,在代码中定义了三个函数:swapr、swapp和swapv,它们分别用于通过引用、指针和传值来交换变量的值。

在主函数中,创建了两个整型变量wallet1和wallet2,并分别赋值为300和350。

接下来,通过cout语句输出wallet1和wallet2的值。

然后,使用swapr函数通过引用来交换wallet1和wallet2的值,并使用cout语句输出交换后的值。

接着,使用swapp函数通过指针来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。

最后,使用swapv函数通过传值来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。

通过运行这段代码,你会看到通过引用和指针交换的结果是正确的,而通过传值交换的结果并不会影响原始的变量值。这段代码演示了通过引用、指针和传值三种方式来交换两个变量的值。

首先,在代码中定义了三个函数:swapr、swapp和swapv,它们分别用于通过引用、指针和传值来交换变量的值。

在主函数中,创建了两个整型变量wallet1和wallet2,并分别赋值为300和350。

接下来,通过cout语句输出wallet1和wallet2的值。

然后,使用swapr函数通过引用来交换wallet1和wallet2的值,并使用cout语句输出交换后的值。

接着,使用swapp函数通过指针来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。

最后,使用swapv函数通过传值来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。

通过运行这段代码,你会看到通过引用和指针交换的结果是正确的,而通过传值交换的结果并不会影响原始的变量值。

引用和指针的区别

引用和指针是C++中两种不同的机制,用于处理变量的别名和内存地址。

  1. 引用(Reference):
  • 引用是变量的别名,通过使用&符号来声明引用。
  • 引用必须在声明时初始化,并且一旦初始化后,它将一直引用同一个变量。
  • 引用在使用时不需要使用*符号进行解引用,直接使用引用名即可访问原始变量。
  • 引用不能为null,必须引用一个有效的对象。
  • 引用可以被用作函数参数,可以通过引用来修改原始变量的值。
  • 引用不能改变引用的目标,即不能改变它引用的变量。
  1. 指针(Pointer):
  • 指针是一个变量,它存储了一个变量的内存地址。
  • 指针通过使用*符号来声明,并且必须在声明时初始化为一个有效的内存地址或者为null。
  • 指针可以通过解引用运算符*来访问指针指向的变量的值。
  • 指针可以为null,表示它没有指向任何有效的对象。
  • 指针可以被重新赋值来指向不同的对象。
  • 指针可以用作函数参数,可以通过指针来修改原始变量的值。
  • 指针可以通过算术运算进行指针的移动。

总结:

  • 引用是变量的别名,指针是存储变量内存地址的变量。
  • 引用必须在声明时初始化,指针可以在任何时候进行初始化。
  • 引用不能为null,指针可以为null。
  • 引用不能改变引用的目标,指针可以通过重新赋值来指向不同的对象。
  • 引用使用起来更加简洁,而指针更加灵活。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA札记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解释
  • 引用和指针的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档