美文网首页C++
😄指针--作为参数进行传递

😄指针--作为参数进行传递

作者: JiehongYOU | 来源:发表于2019-05-23 09:37 被阅读0次
内存地址 &
什么是指针 *

指针是一个变量,值为 另一个变量的内存地址
值:都是一个代表内存地址的长十六进制数

#include <stdlib.h>;
#include <iostream>;
using namespace std;

// 定义结构体 
typedef struct {
    int x;
    int y;
}Coor;

namespace test {

    void fun(int *a,int *b) {
        int c = 0;
        c = *a;
        *a = *b;
        *b = c;
    }

    void fun2(int& a, int& b) {
        int c = 0;
        c = a;
        a = b;
        b = c;
    }
}
// 指针方向
//类型 *&指针引用名 = 指针

// 只有别名,没有真实姓名
int main(void) {
    /*
    ------------------------------
    */
    // 定义基础类型
    int a = 3;

    // 进行引用:别名的操作,就是本身的操作
    int &b = a; 

    b = 33;

    cout << a << endl; // 输出的a:33
    /*
    ------------------------------
    */

    // 自定义结构体
    Coor c1;
    // 引用结构体
    Coor& c = c1;
    // 别名引用的操作:实际上是对其本身的操作
    c.x = 10;
    c.y = 20;

    cout << "c1.x :" << c1.x << "  c1.y" << c1.y << endl; // 输出的c1.x = 10 ; c1.y= 20

    /*
    ------------------------------
    */
    // 基础类型的定义
    int a2 = 10;
    // 指针是:引用的地址
    int *p = &a2;
    // 对p的操作:实际上是对a的操作
    *p = 1111;
    cout << "a2 : " << a2 << endl; // a2 进行了修改 = 1111

    // p 本来就是a2的值
    // 将p  的值,进行传递给q ,需要,进行数据类型的统一
    // q 为引用指针
    int *&q = p;
    // 对q的操作,是对p 的操作,实际是对 a2 的操作
    *q = 2222;
     // p是地址 并且 p 和 q 的值是相同的.
    // *p 取得是地址里边得值
    
    // 显示地址
    cout << "p:" << p << endl;
    cout << "q:" << q << endl;
    
    // 显示地址里边的内容
    cout << "p:" << *p << endl;
    cout << "q:" << *q << endl;
    cout <<"a2:"<< a2 << endl;  // a2 已经被修改为2222
    /*
    ------------------------------
    */
    // 参数调用
    int x = 10, y = 20;
    test::fun(&x, &y);
    test::fun2(x, y);
    cout << "exchange:" << "x:" << x << "y:" << y << endl;
    cout << "exchange-fun2:" << "x:" << x << "y:" << y << endl;

    // 引用传递
    // 定义引用
    int d = 10;
    int& f = d; // b 是a的别名
    f = 100;
    cout << d << endl;
    cout << f << endl;


    system("pause");
    return 0;

}

相关文章

  • 😄指针--作为参数进行传递

    内存地址 & 什么是指针 * 指针是一个变量,值为 另一个变量的内存地址值:都是一个代表内存地址的长十六进制数

  • 指针作为函数参数

    在java和c++中,都是采用按值传递 用指针作为函数参数,可以将其转换为按址传递,这样系统变量也能够进行按址传递了

  • 指针

    指针 数组指针和指针数组 函数指针和指针函数 指针作为参数 指针多用于处理值传递,减少值复制耗费的内存

  • Go语言学习笔记(三)

    指针 Go的指针不能运算 参数传递 Go的参数传递是值传递(值传递:开辟新的空间,拷贝传递参数的值,引用传递:引用...

  • golang学习笔记(七)复合类型

    复合类型 类型名称作为函数参数pointer指针值传递array数组值传递slice切片引用传递map字典引用传递...

  • 02_C++笔记_函数

    复习数组和指针的关系: 结果如下: 数组和指针作为参数传递: 进一步改进: const和指针, 指针指向指针: 函...

  • Objective-C基础学习之对象和方法之间的关系

    1.对象作为方法的参数 对象作为方法参数传递是地址传递,因为对象是一个指针变量 在方法内部,可以通过对象形参,访问...

  • 读书笔记17.06.02【stack】【vector】

    C++中参数传递:按值传递,指针传递和引用传递按值传递:形参是实参的拷贝。指针传递:拷贝指针,被调用函数对指针指向...

  • 对象作为函数参数的三种方式及推荐

    对象作为函数参数时有三种情况 一为 普通类作形参直接传递参数 二为引用类对象作为函数参数 三为对象指针作为函数参数...

  • 对象和方法的关系

    1.对象作为方法的参数 对象作为方法参数传递是地址传递,因为对象是一个指针变量在方法内部,可以通过对象形参,访问该...

网友评论

    本文标题:😄指针--作为参数进行传递

    本文链接:https://www.haomeiwen.com/subject/xmdhzqtx.html