值传递

一般程序中我们经常 需要 修改 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 \n", a, b);

        return 0;
}
posted @ 2014-11-03 15:55  scott_h  阅读(208)  评论(0编辑  收藏  举报