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

内存地址 &
什么是指针 *

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

#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;

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,471评论 3 44
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,136评论 1 32
  • void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*...
    冰吉凌阅读 3,380评论 0 18
  • 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存...
    C语言学习阅读 1,292评论 0 4
  • 手机铃声突然想起,是爸爸给我打的电话。接通的电话的第一句爸爸问我:“还在上海吗?爸爸过来看看你。” 我把酒店的地址...
    宝藏男孩的日常阅读 299评论 0 1