zoukankan      html  css  js  c++  java
  • C语言讲义——传值、传引用

    传值

    值类型在做参数的时候,函数内使用的是实参的副本
    函数执行完毕后,即使函数内对参数做了修改,调用方的参数还是原来的值。

    #include <stdio.h>
    // 值调用
    void swap_value(int x, int y) {
    	int temp = x;
    	x = y;
    	y = temp;
    }
    main() {
    	int x = 0;
    	int y = 1;
    	printf("x = %d, y = %d
    ", x, y);
    
    	swap_value(x, y);
    	printf("传值调用后:x = %d, y = %d
    ", x, y);
    }
    

    运行结果:

    x = 0, y = 1
    传值调用后:x = 0, y = 1
    

    传引用

    将地址传入参数,在地址指向的内存空间中修改具体的值,则调用方亦可取也。

    #include <stdio.h>
    //  “值调用”
    void swap_value(int x, int y) {
    	int temp = x;
    	x = y;
    	y = temp;
    
    }
    // “引用调用1”,形参:传的是地址,取得是值(*)
    void swap_p(int* x, int* y) {
    	int temp = *x;
    	*x = *y;
    	*y = temp;
    }
    // “引用调用2”,形参:传的是值,接的是地址
    void swap_addr(int &a, int &b) {
    	int temp = a;
    	a = b;
    	b = temp;
    }
    main() {
    	int x = 0;
    	int y = 1;
    	printf("x = %d, y = %d
    ", x, y);
    
    	swap_value(x, y);
    	printf("传值调用后:x = %d, y = %d
    ", x, y);
    
    	swap_p(&x, &y);
    	printf("传地址调用后:x = %d, y = %d
    ", x, y);
    
    	swap_addr(x, y);
    	printf("传值接地址调用后:x = %d, y = %d
    ", x, y);
    }
    

    运行结果:

    x = 0, y = 1
    传值调用后:x = 0, y = 1
    传地址调用后:x = 1, y = 0
    传值接地址调用后:x = 0, y = 1	←(0,1)换成(1,0);这一步又还回来(0,1)
    

    练习:返回值,返回参数

    定义一个函数,要求能够同时得到一个整型数组的最大值和最小值。

    #include <stdio.h>
    // 返回值:最大值
    // 返回参数:最小值
    int max_min(int a[], int len, int *min) {
    	int nMax = a[0];
    	int nMin = a[0];
    	for(int i = 0; i<len ; i++) {
    		if (nMax < a[i]) {
    			nMax = a[i];
    		}
    		if (nMin > a[i]) {
    			nMin = a[i];
    		}
    	}
    	*min = nMin;
    	return nMax;
    }
    
    int main(int argc, char *argv[]) {
    	int a[]= {1,2,5,9,7};
    	int len = sizeof(a)/sizeof(int);
    
    	int nMax_main;
    	int nMin_main;
    	nMax_main = max_min(a, len, &nMin_main);
    	printf("Main : Max = %d, Min = %d
    ", nMax_main, nMin_main);
    
    	return 0;
    }
    
  • 相关阅读:
    在react中使用css module
    Hoisting(变量提升)
    JS 实现货币格式化
    使用promise封装一个retry
    【要命的神奇bug】if条件 使用 正则表达式
    iframe内媒体查询的问题
    iframe嵌套登录页-页面无法加载
    Sketch Measure切图插件无法导出标注 (换插件绕过解决)
    python项目中获取当前文件所在目录
    上传文件踩到的坑
  • 原文地址:https://www.cnblogs.com/tigerlion/p/11191589.html
Copyright © 2011-2022 走看看