如何在C#中定义C++的指针?万分感激呀!

yuejumei 2012-08-14 08:36:22
本人需要把一段C++算法代码翻译成C#,但代码里出现了指针的指针,定义如下:
private double **a;

这样的定义在C#中怎么表示呢?


二是它在实例化时又如下,在double后面跟一个*号,这是什么意思?

a = new double* [n] //n代表一个常数


三是它在用法时,即可作为一维数组用,也可当二维数组用,我就更晕了,没见过指针还能这样用的?

for (i = 0; i < n; i++)
{
a[i] = new double[n + 1];//作为一维数组用
}

a[i - 1][j - 1] = term1 - term2;//作为二维数组用


由于算法很长,可能没有把全部代码贴出来,但代码中真实是这样使用的,我就不明白这是什么意思?

再加上本人C++不才,所以,有高手帮帮忙,万分感激!


如何在C#中定义C++的指针?万分感激呀!
...全文
183 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhibin11 2012-08-14
  • 打赏
  • 举报
回复

double[][] a = new double[n][];
for (int i = 0; i < n; i++)
{
a[i] = new double[n + 1];
}
a[i - 1][j - 1] = term1 - term2;
家鸣 2012-08-14
  • 打赏
  • 举报
回复
指针的指针, 归根到底还是指针,在C#中可以用Intptr表示。

数组名其实就是这个数组的首地址,可以理解为一个指针,这个指针指向了数组的首个元素。

a = new double* [n] //n代表一个常数

这里是个指针数组。就是这个数组里面的值都是个指针,弄懂了这里,其它的都好理解。
bwangel 2012-08-14
  • 打赏
  • 举报
回复
首先C++的算法没必要翻译成C#,C#完全可以调用C++的DLL,保留原汁原叶的算法,速度还快,经过考验的类库不容易出错。这是软件工程的重要原则。你翻牛劲翻译过来还难免不出bug,即使没有bug也还要经过新一轮的考验期。成本很高。

其次C#如果要用指针,你可以查一查unsafe模式。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧