zoukankan      html  css  js  c++  java
  • 通过指针形参修改实参的值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

  • 相关阅读:
    Eclipse慢慢学会的快捷键
    换行和flush()
    接口Interface
    对象的转型
    抽象类和抽象函数
    BufferedReader
    FileInputStream和FileReader
    Unable to instantiate receiver XXXXXX
    声明对象和定义数组
    Eclipse中文乱码问题
  • 原文地址:https://www.cnblogs.com/acgpiano/p/4017858.html
Copyright © 2011-2022 走看看