C#的锯齿数组以及C++实现代码

原则:

1、锯齿数组首先是二维数组,第一维的维数是确定的

2、之所以在C#中能够出现灵活的锯齿数组,是因为,C#的数组是引用类型(本质上存放的是指针)

根据这个引用类型(指针)的概念,C++中用指针数组同样可以实现

C#中:

class A{}

int szA[][] = new int[3][];

szA[0] = new int[2];

szA[1] = new int[6];

szA[2] = new int[3];

当然此时实际的各个数组元素(整形变量)尚未初始化值,C#不允许使用未经初始化的变量

C++中,可以定义int *指针变量的数组,成员是三个int *指针变量,然后每个指针变量在堆内存上分配2,6,3个int变量的内存,

这样就ok了!

实际上,就是利用了指针的概念,只是C#的语法形式上看起来简单些,但是也失去了直接操作内存底层值的灵活性,托管,非托管,.net平台有利有弊的。

(0)

相关推荐

  • C#递归实现将一整数逆序后放入一数组中

    本文实例讲述了C#递归实现将一整数逆序后放入一数组中的方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: static void Main(string[] args) {     int m = 1236578;     int[] ms = new int[m.ToString().Length];     Rev(m.ToString().Length, m, ref ms);     for (int i = 0; i < m.ToString().Length; i+

  • C#数组初始化简析

    题外话:学习.NET已经有一年了,从C#->ASP.NET->WPF.主要以看电子书为主,比较少写代码.现在回头学习以前接触过的,随着知识与经验的的积累. 总是有各种惊喜,震惊!C#数组就是其中之一,我把它作为自己博客园的处女作. C#数组与其它C系列语言有着很多的不同,以前接触的时候理解出现很大的偏差.尤其是对多维数组的认识.多维数组与C语言相比是一个新概念.而最开始的 时候我把它当成交错数组的特殊类型. 首先重二维数组与简单的交错数组的初始化与访问开始 复制代码 代码如下: int[,]

  • C# 中将数值型数据转换为字节数组的方法

    复制代码 代码如下: private void Value_ByteArray() {double doublevalue = 258.0;Int32 intvalue = 258;string strValue = "258";Int16 int16value = 258;MemoryStream doublemem = new MemoryStream();BinaryWriter doublebyteWR = new BinaryWriter(doublemem);doubleb

  • c#获取数组中最大数的值

    求数组中最大的数的值:1.数组的max函数: 复制代码 代码如下: class Program    {        static void Main(string[] args)        {            int[] array = {1,3,5,2,4,6,7,9,0,8};           int max= GetMax(array);            Console.WriteLine("数组中最大的值是{0}",max);            Co

  • 浅析C#中数组,ArrayList与List对象的区别

    我们先来了解一下数组,因为数组在C#中是最早出现的.数组数组有很多的优点,比如说数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单,比如: 复制代码 代码如下: string[] s=new string[3];//赋值s[0]="a";s[1]="b";s[2]="c";//修改s[1]="b1"; 但是,数组也存在一些不足的地方.比如在数组的两个数据间插入数据也是很麻烦的.还有我们在声明数组的

  • C#各种数组的用法实例演示

    本文以实例演示了C#各种数组的基本用法.主要包括:一维数组.二维数组.锯齿型数组.长度不同的两个数组.3行4列的矩阵数组等. 具体实现代码如下: using System; class ArrayApp { public static void Main ( ) { //一维数组用法:计算数组中奇偶数的个数 Console.WriteLine("一维数组演示:一维数组中的奇偶数个数"); int[ ] arr1 = new int[ ] {8, 13, 36, 30, 9, 23, 4

  • C#交错数组浅析

    C#数组有很多值得学习的地方,这里我们主要介绍C#交错数组,包括介绍一维数组例.二维数组例.C#交错数组等方面. 数组是在我们编程当中经常用到的,想来大家对数组都有一定的概念,这部分内容将给大家详细讲解数组在C#中是如何来定义及使用的. 定义:数组是具有同一类型的一组值,数组是引用类型的,因此存在内存堆中.数组中的元素值可以在定义数组时赋予,也可以在定义数组后对单个元素进行赋值. 一维数组例: 复制代码 代码如下: public static void Main() { //一维数组 int[]

  • C#把数组中的某个元素取出来放到第一个位置的实现方法

    本文实例讲述了C#把数组中的某个元素取出来放到第一个位置的实现方法.分享给大家供大家参考.具体分析如下: 如何取出数组中符合某种条件的元素,然后放在数组最前面,即索引为0的位置? 思路大致如下: ① 找到符合条件的数组元素,把之赋值给一个临时变量temp,并记下该数组元素的索引位置,假设是index ② 在源数组中,从索引为0的数组元素开始,拷贝index个数组元素到另外一个目标数组 ③ 把临时变量temp赋值给目标数组索引为0的位置 复制代码 代码如下: public static class

  • C#基础之数组排序、对象大小比较实现代码

    从个小例子开始: 复制代码 代码如下: int[] intArray = new int[]{2,3,6,1,4,5}; Array.Sort(intArray); Array.ForEach<int>(intArray,(i)=>Console.WriteLine(i)); 这个例子定义了一个int数组,然后使用Array.Sort(arr)静态方法对此数组进行排序,最后输出排序后的数组.以上例子将毫无意外的依次输出1,2,3,4,5,6. 为什么Array的Sort方法可以正确的对i

  • c#泛型序列化对象为字节数组的示例

    序列化对象为字节数组 复制代码 代码如下: using System.IO;using System.Runtime.Serialization.Formatters.Binary;        protected byte[] Serialize<T>(T t)        {            MemoryStream mStream = new MemoryStream();            BinaryFormatter bFormatter = new BinaryFo

  • C# 泛型数组学习小结

    C# 泛型和数组在 C# 2.0 中,下限为零的一维数组自动实现 IList<T>.这使您可以创建能够使用相同代码循环访问数组和其他集合类型的泛型方法.此技术主要对读取集合中的数据很有用.IList<T> 接口不能用于在数组中添加或移除元素:如果试图在此上下文中调用 IList<T> 方法(如数组的 RemoveAt),将引发异常.下面的代码示例演示带有 IList<T> 输入参数的单个泛型方法如何同时循环访问列表和数组,本例中为整数数组. C# 泛型和数组

随机推荐