• C++ 指针调用


     要想了解指针调用,首先要了解指针:

    学习 C++ 的指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。

    正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:

    1. #include
    2. using namespace std;
    3. int main ()
    4. {
    5. int var1;
    6. char var2[10];
    7. cout << "var1 变量的地址: ";
    8. cout << &var1 << endl;
    9. cout << "var2 变量的地址: ";
    10. cout << &var2 << endl;
    11. return 0;
    12. }

    当上面的代码被编译和执行时,它会产生下列结果:

    var1 变量的地址: 0xbfebd5c0
    var2 变量的地址: 0xbfebd5b6

    通过上面的实例,我们了解了什么是内存地址以及如何访问它。接下来让我们看看什么是指针。

    指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:

    type *var-name;

    在这里,type 是指针的基类型,它必须是一个有效的 C++ 数据类型,var-name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。
     

     向函数传递参数的指针调用方法,把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数 

    按指针传递值,参数指针被传递给函数,就像传递其他值给函数一样。因此相应地,在下面的函数 swap() 中,您需要声明函数参数为指针类型,该函数用于交换参数所指向的两个整数变量的值。

    1. // 函数定义
    2. void swap(int *x, int *y)
    3. {
    4. int temp;
    5. temp = *x; /* 保存地址 x 的值 */
    6. *x = *y; /* 把 y 赋值给 x */
    7. *y = temp; /* 把 x 赋值给 y */
    8. return;
    9. }

    现在,让我们通过指针传值来调用函数 swap()

    1. #include
    2. using namespace std;
    3. // 函数声明
    4. void swap(int *x, int *y);
    5. int main ()
    6. {
    7. // 局部变量声明
    8. int a = 100;
    9. int b = 200;
    10. cout << "交换前,a 的值:" << a << endl;
    11. cout << "交换前,b 的值:" << b << endl;
    12. /* 调用函数来交换值
    13. * &a 表示指向 a 的指针,即变量 a 的地址
    14. * &b 表示指向 b 的指针,即变量 b 的地址
    15. */
    16. swap(&a, &b);
    17. cout << "交换后,a 的值:" << a << endl;
    18. cout << "交换后,b 的值:" << b << endl;
    19. return 0;
    20. }

    当上面的代码被编译和执行时,它会产生下列结果:

    交换前,a 的值: 100
    交换前,b 的值: 200
    交换后,a 的值: 200
    交换后,b 的值: 100

     

     

  • 相关阅读:
    虚拟机 Workstation 16 Ubuntu22.04 TLS AOSP环境搭建
    pg数据表同步到hive表数据压缩总结
    基于单片机的汽车防盗报警系统设计与实现
    站稳前沿消费趋势,IU酒店持续领跑轻中端品牌
    基于php的中小型服装厂原料采购系统
    探索常见经典目标检测算法:从YOLO到Faster R-CNN
    猫头虎分享已解决Bug || TypeError: Cannot read property ‘map‘ of undefined**
    从单点到全景:视频汇聚/安防监控EasyCVR全景视频监控技术的演进之路
    【Linux】软件管理器yum和编辑器vim
    抖音外卖平台区域代理怎么拿?送上申请教程!
  • 原文地址:https://blog.csdn.net/DUXS11/article/details/126280924