• 通过指针形参修改实参的值1


    注意:图示使用的地址只是假设的,并不是真正的内存地址,只是说明原理

    先说说修改基本类型变量的值,比如说int类型,可以直接修改,也可以通过函数修改,看下代码

    #include <stdio.h>  
    
    void change(int *a)
    {
        int temp = 555;
        a = &temp;
    }
    
    int main()
    {
        int i = 5;
        int j = 55;
        int *p = &i;
    
        i = 10;//第一种修改方法
        printf("%d
    ", i);
    
        i = j;//第二种修改方法
        printf("%d
    ", i);
    
        change(p);//第三种并没有修改成功
        printf("%d
    ", i);
    
        getchar();
    
        return 0;
    }

    前两种方式都知道的,重点看下第三种方法,来看图,执行change函数之前

    1

    接着执行函数change,刚开始p的值传给a,地址传递

    1

    接下来,函数把temp的地址传给a,a指向temp,并没有改变p和i

    1

    接下来改变一下函数

    void change(int *a)
    {
        int temp = 555;
        *a = temp;
    }

    还是看看函数执行开始的时候,和刚才一样

    1

    但接下来,没有改变指针变量的值,而是改变指针所指向变量的值,就是把temp的值给了i

    1

  • 相关阅读:
    Maven简介
    Activiti核心API
    Activiti数据库支持
    使用idea进行activiti工作流开发入门学习
    Activiti 工作流
    枚举其他用法
    枚举类的基本使用
    kotlin中抽象类
    kotlin中接口
    kotlin 类的继承
  • 原文地址:https://www.cnblogs.com/acgpiano/p/4017858.html
Copyright © 2020-2023  润新知