zoukankan      html  css  js  c++  java
  • 常见误区(一)

    无论是C/C++,还是java,默认情况是值传递,这就造成编写一般意义认为正确的交换两数的方法成为错误的。

    C++中可用指针或者引用方式避免

    #include<iostream>
    using namespace std;
    
    //一般认为,但是由于传过去的是两个值,所以变量值不改变
    void swap1(int a ,int b)
    {
    	int temp;
    	temp = a;
    	a = b;
    	b = temp;
    	
    }
    
    //采用引用的方法,书写简单易懂
    void swap2(int &a,int &b)
    {
    	int temp;
    	temp = a;
    	a = b;
    	b = temp;
    }
    
    //采用指针方式
    void swap3(int *a,int *b)
    {
    	int temp = *a;
    	*a = *b;
    	*b =temp;
    }
    int main()
    {
    	int swapa = 10;
    	int swapb = 20;
    	int swapc = 10;
    	int swapd = 20;
    	int swape = 10;
    	int swapf = 20;
    	swap1(swapa,swapb);
    	cout<<"swapa原来10,现在为:"<<swapa<<endl<<"swapb原来20,现在为:"<<swapb<<endl;
    	swap2(swapc,swapd);
    	cout<<"swapc原来10,现在为:"<<swapc<<endl<<"swapd原来20,现在为:"<<swapd<<endl;
    	swap3(&swape,&swapf);
    	cout<<"swape原来10,现在为:"<<swape<<endl<<"swapf原来20,现在为:"<<swapf<<endl;
    	
    	system("pause");
    }
    

     

    可以看出直接编写的swap1()方法是无法完成任务的。

    但是采用引用或者是指针的形式是行得通的。

  • 相关阅读:
    Mooncake (排序+贪心)
    The Black Hole of Numbers (strtoint+inttostr+sort)
    随机排序
    EF 随机排序
    禁用DropDownList的Items
    sql之left join、right join、inner join的区别
    SQL优化-索引
    .net 面试问题 汇总
    从简单的例子理解泛型
    1.1 使用内置的Camera应用程序捕获图像
  • 原文地址:https://www.cnblogs.com/starainDou/p/4715040.html
Copyright © 2011-2022 走看看