zoukankan      html  css  js  c++  java
  • 值传递

    一般程序中我们经常 需要 修改 2个形参的内容。

    比如
    memcpy(dst,src,size)
    strcpy(dst,src,size)
    strstr(dst,src,size)

    需要把src 的内容 赋值给dst+x ,然后把修改后dst的值,反映到函数外部。

    以下就是2种方法,来修改 输入的形参 内容。

    • 引用传值
    • 地址传值

    当然你还 可以使用

    • 全局变量
    • 返回 容器 vector
    • 使用heap(出来后再释放)

    以上方式,本质上差别不大。

    golang中可以返回多个参数。本质上也是返回 多个参数的容器而已。

    
    
    void swap(int &a, int &b)//引用传值
    {
    	int temp = 0;
    	temp = a;
    	a = b;
    	b = temp;
    }
    
    void swap1(int &a, int &b)//异或 是来打酱油的,与主题无关
    {
    	a = a^b;
    	b = b^a;
    	a = a^b;
    }
    
    void swap2(int *a, int *b)//地址传值
    {
    	int temp = *a;
    	*a = *b;
    	*b = temp;
    }
    
    
    
    int main()
    {
    	int a = 20;
    	int b = 30;
    	swap(a,b);// 方案1:    引用传值
            swap1(a,b);//方案1:还是引用传值, 不过 用 异或(XOR:相同为0,不同为1)    a= a^b; b = b^a; a=a^b;
    
    	int *m = &a;
    	int *n = &b;
    	swap2(m,n);// 方案2:  地址传值   //也可以直接 这么写 swap2(&a,&b);
           
           
       
    	printf("%d, %d 
    ", a, b);
    
            return 0;
    }
    
  • 相关阅读:
    Lyft Level 5 Challenge 2018
    Codeforces Round #514 (Div. 2)题解
    Bubble Cup 11
    不如来搞一下CDQ分治吧!
    Codeforces Round #331 (Div. 2)
    写一下中国剩余定理的证明
    codeforces Round#332Div2 题解
    GCPC2017 题解
    2017 USP Try-outs 题解
    CodeForce 387D. George and Interesting Graph
  • 原文地址:https://www.cnblogs.com/scotth/p/4933445.html
Copyright © 2011-2022 走看看