CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

请问在C#里怎样获得一个二维数组没一行的首地址?

楼主FrankJay(Frank)2005-08-01 23:19:55 在 .NET技术 / C# 提问

如题,谢谢! 问题点数:50、回复次数:8Top

1 楼Sunmast(速马@Redmond, WA)回复于 2005-08-02 00:26:40 得分 20

首元素地址:  
  [STAThread]  
  static   unsafe   void   Main(string[]   args)  
  {  
  int[,]   matrix   =   new   int[3,3];  
  fixed(int*   pi   =   &matrix[0,0])  
  {  
  Console.WriteLine("{0:X}",   (uint)pi);  
  }  
   
  Console.ReadLine();  
  }  
   
  数组内的数据是顺序排列的,所以其他行的首地址可以偏移得到  
   
  不过你要用这种代码做什么?Top

2 楼zhilunchen(他山居士)回复于 2005-08-02 00:54:30 得分 0

强!Top

3 楼zeusvenus()回复于 2005-08-02 07:40:48 得分 0

厉害,偶还在想中已经有现成的实现了。Top

4 楼Brunhild()回复于 2005-08-02 08:00:47 得分 20

不必使用UNSAFE代码:  
  ///   <summary>  
  ///   获取指定二维数组的某个元素的地址  
  ///   </summary>  
  ///   <param   name="matrix">要检测的二维数组</param>  
  ///   <param   name="row">二维数组的行号</param>  
  ///   <param   name="col">二维数组的列号</param>  
  ///   <returns>指定元素的地址</returns>  
  static   int   GetAddress(int[,]   matrix,   int   row,   int   col)  
  {  
  int   pos=(matrix.GetUpperBound(0)+1)*row+col;  
  IntPtr   ptr=System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(matrix,   pos);  
  return   ptr.ToInt32();  
  }  
   
  示例:  
  Console.WriteLine("{0:X}",   GetAddress(matrix,   0,0))  
   
  Top

5 楼cdo(Everything has a favourable turn)回复于 2005-08-02 08:54:47 得分 0

MVP出马了,我只能支持了.Top

6 楼superfishmanweb(我也是千百个不愿意呀)回复于 2005-08-02 09:09:09 得分 0

markTop

7 楼GmLibra(平常心)回复于 2005-08-02 09:10:49 得分 5

顶Top

8 楼Sunmast(速马@Redmond, WA)回复于 2005-08-02 12:38:47 得分 5

@Brunhild():  
  用Marshal类确实可以得到其地址。但由于数组是在GC堆上的,而GC会移动GC堆上的对象,所以要得到数组的地址并且使用,必须先固定它  
  fixed{}代码块就是用于解决这个问题  
   
  所以必须使用unsafe上下文,嗯Top

相关问题

  • 一个C#二维数组问题
  • 二维数组
  • 二维数组问题,怎样删除二维数组中的一行或多行?解决接结贴!
  • c++中二维数组、一维数组指针、二级数组之间的关系
  • oracle 二维数组
  • 在C++中返回二维数组,怎么老是出错?
  • 手头上没有C的书,如何定义二维数组?
  • c++中如何传递二维数组,函数接口?
  • c中怎样动态定义二维数组?谢谢
  • c++中二维动态数组的定义方法求教!!

关键词

  • 代码
  • 二维数组
  • 数组
  • 地址
  • matrix
  • unsafe
  • 元素
  • gc
  • 使用
  • 得到

得分解答快速导航

  • 帖主:FrankJay
  • Sunmast
  • Brunhild
  • GmLibra
  • Sunmast

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo