当前位置: 代码迷 >> C# >> 求问怎么得到二维数组的地址,如果有大神帮小弟我看看代码
  详细解决方案

求问怎么得到二维数组的地址,如果有大神帮小弟我看看代码

热度:84   发布时间:2016-05-05 04:12:19.0
求问如何得到二维数组的地址,如果有大神帮我看看代码

------解决思路----------------------
看我的测试代码

unsafe void Test()
        {
            int[,] a = new int[10,10]
                {
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10},
                    {1,2,3,4,5,6,7,8,9,10}
                };

            int[] b = new int[]{1,2,3,4,5,6,7,8,9,10};

            fixed (int* aPoint = a)
            {
                for (int i = 0; i < 10; ++i)
                {
                    for (int j = 0; j < 10; ++j)
                    {
                        Console.WriteLine(aPoint[i * 10 + j]);
                    }
                }
            }

        }
------解决思路----------------------
另外,我觉得你这个应该不需要使用指针。
------解决思路----------------------
这东西,数组就数组了,用不着指针。参数就不能和数组么?你这东西又不往C里传
别拿C的那套来玩C#,用指针只会玩死自己。
这东西,用一维就足够了
int a[]= new int[100*100];
int i=2;
int j=40;
a[i*100+j]  这样跟你的 a[i,j] 是一样效果

你的 judge可以改成 void judge(int[] a,int [] b)

------解决思路----------------------
这东西,数组就数组了,用不着指针。参数就不能数数组了么?你这东西又不往C里传
 别拿C的那套来玩C#,用指针只会玩死自己。
 这东西,用一维就足够了
int a[]= new int[100*100];
 int i=2;
 int j=40;
 a[i*100+j]  这样跟你的 a[i,j] 是一样效果

 你的 judge可以改成 void judge(int[] a,int [] b)
------解决思路----------------------
既然你用了二维数组,那就一直用下去
int[,] a = new int [100, 100];
就用 a[i, j]  访问 (0<= i.j < 100 )
void judge(int[,] a,int [,] b)
不要用指针(C#也不建议用,因为他怕自己弄错了)
如果你嫌传来传去麻烦,可以令 a、b 为全局的
------解决思路----------------------
不能按照c的方式来使用c#。
对象引用本质上就是传的地址,但是比使用指针安全
------解决思路----------------------
把 [,] 去掉
------解决思路----------------------
C++ 默认传递的是值,所以对数组要传递指针
C# 默认传递引用,所以就抛弃了指针的概念
  相关解决方案