zoukankan      html  css  js  c++  java
  • 值传递、指针传递、引用传递

    指针和引用

    指针:是一个变量,存储着一个地址(占4个字节),这个地址指向一块内存。
    引用:是一个已有变量的别名,所以引用在创建的时候就需要初始化。

    #include <iostream>
    using namespace std;
    
    typedef struct{
        int a;
        int b;
        int c;
        void (*function1)(int);
        void (*function2)(int *);
        void (*function3)(int &);
    }param;
    
    void function1(int _a)
    {
        _a += 10;
    }
    void function2(int *b)
    {
        *b += 10;
    }
    void function3(int &c)
    {
        c += 10;
    }
    
    int main(void)
    {
        param param1 = {10,20,30,function1,function2,function3};
        
        //值传递,形参是实参在栈中的拷贝,形参是实参的副本。从被调用函数来看,
        //值传递是单向的(实参—>形参),即参数值只能传入。(效率低下)
        param1.function1(param1.a); 
    
        //指针传递,形参是指向实参地址的指针,改变形参指向地址的值同样也会改变实参的值。
        param1.function2(&param1.b);
    
        //引用传递,形参相当于实参的“别名”,形参在栈。中开辟了空间,保存的是实参的地址。
        //被调函数对形参进行的任何操作都被认为是间接寻址。所以会影响实参的值
        param1.function3(param1.c); 
    
        cout << "param1.a: " << param1.a << endl;
        cout << "param2.b: " << param1.b << endl;
        cout << "param3.c: " << param1.c << endl; 
    
        system("pause");
        return 0;
    }
    
  • 相关阅读:
    JavaScript-年月日转换12小时制
    Javascript-双色球
    Javascript-for循环案例-打印1-100之间所有的数字
    HDU4240_Route Redundancy
    HDU2883_kebab
    POJ3041_Asteroids
    HDU3829_Cat VS Dog
    BZOJ2806_Cheat
    HDU4641_K-string
    CF271D_Good Substrings
  • 原文地址:https://www.cnblogs.com/xiongyungang/p/10715350.html
Copyright © 2011-2022 走看看