C#和C/C++指针实现swap交换

简介:
当我们要编程的时候要实现两个数的简单交换,要求必须调用子函数来交换,咋一看挺简单,就直接交换一下或许就能实现,但真正实现起来或许我们会碰到一定的问题,当运行结果的时候,我们有可能会惊讶的发现怎么两个数还没有交换呢,其实这是我们对函数参数是值类型还是应用类型还不够了解,发生错误就是因为我们使用的是值传递,接下来我通过两种语言来实现这一方法,首先是c语言实现
  C代码实现:
#include <stdio.h>  void swap(int* a,int* b) { 	int p; 	p=*a; 	*a=*b; 	*b=p; }  int main() { 	int a=1; 	int b=2; 	printf("a=%d,b=%d",a,b); 	swap(&a,&b); 	printf("\na=%d,b=%d",a,b); 	return 0; } 
其次是C#实现,很多初学者或许会疑惑,为什么C#是继C/C++/java之后的新的面向对象的语言,他取长补短,实现了很多的封装,让我们程序员使用起来非常的便捷,但为什么微软取消了C/C++中指针的实现,其实进一步升入,其实微软并没有抛弃这一类型,只不过是换了一种说法而已,用ref和out关键字取代了之前的指针,从而实现了地址的传递,接下来介绍一下C#实现的swap方法
C#代码实现:
 
 
using System;  namespace Swap {     class Program     {         public static void Main(string[] args)         {             int a = 2;             int b = 3;             Console.WriteLine("a={0},b={1}", a, b);             Swap(ref a, ref b);             Console.WriteLine("a={0},b={1}", a,b);             Console.Read();         }          private static void Swap(ref int a, ref int b)         {             int p = a;             a = b;             b = p;         }     } } 























本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366858,如需转载请自行联系原作者

相关文章
|
1月前
|
JSON JavaScript 前端开发
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
269 0
|
3天前
|
C++
【C++11(三)】智能指针详解--RAII思想&循环引用问题
【C++11(三)】智能指针详解--RAII思想&循环引用问题
|
3天前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
9 0
|
3天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
25 1
|
18天前
|
存储 C++
C++指针
C++指针
|
29天前
|
存储 编译器 C语言
【c++】类和对象(二)this指针
朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针
【c++】类和对象(二)this指针
|
30天前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
1月前
|
存储 安全 数据库连接
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
82 0
|
1月前
|
存储 安全 编译器
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
110 0
|
16天前
|
存储 C语言
C语言 — 指针进阶篇(下)
C语言 — 指针进阶篇(下)
20 0