(C#) 如何用二级指针指向二维数组? 30

如:二维数组int[,]intArr=newint[5,5];但intArr只是一个int*的类型,而不是int**;这和C/C++不一样。现在的问题是,如何像C/C++... 如:二维数组int[,] intArr = new int[5,5];
但intArr只是一个int*的类型,而不是int**;这和C/C++不一样。
现在的问题是,如何像C/C++那样,用int** intPtr;来指向这个二维数组,并用*(*(intPtr+i)+j)的方式得到intArr[i,j]?
怎么用*(*(intPtr+i)+j)的方式得到intArr[i,j]?
能举个例吗?
展开
 我来答
吾之残情
2009-12-22 · TA获得超过1133个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:293万
展开全部
其实,毕竟C#和C/C++不一样。
在C#是很不赞成使用指针的。
在C#中,二级指针叫数组的数组,看个例子:
int[2][] array;
arry[0]=new int[3]{0];
arry[1]=new int[4]{0];
或则 这么int[][]array = {new int[3]{0],new int[4]{0]};
《C#经典入门》有讲解

楼主的意思是非要指针了,虽然指针在C#中不建议用。一般就array[1,2]访问就可以。用指针,
那就在unsafe代码中写,就和3楼写的一样。
还有一点就是,如果你喜欢指针,那就最好学习C/C++,C#可以说禁止使用了.
successjerry
2009-12-21 · TA获得超过919个赞
知道小有建树答主
回答量:576
采纳率:0%
帮助的人:449万
展开全部
C#中用指针不方便啊,并且官方也是不赞成使用,因为不安全,如果要使用的话可以在字段unsafe下使用,以下是一个单指针使用例子,双重指针可以仿照一下
unsafe
{
//得到首地址
byte* ptr = (byte*)(bmpData.Scan0);
for (int i = 0; i < bmpData.Height; i++)
{
for (int j = 0; j < bmpData.Width; j++)
{
temp = (byte)(0.299 * ptr[2] + 0.587 * ptr[1] + 0.114 * ptr[0]);
ptr[0] = ptr[1] = ptr[2] = temp;
ptr += 3;
}
ptr += bmpData.Stride - bmpData.Width * 3;//指向下一行数组的首个字节
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光子炮
2009-12-21 · TA获得超过591个赞
知道小有建树答主
回答量:287
采纳率:100%
帮助的人:358万
展开全部
c++没学好,不太懂你的意思。
c#本身肯定能实现你这个功能的。

如果你对c++很熟c#不熟的话,你直接把方法申明为unsafe的,这样就可以直接使用指针了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7816c65
2009-12-22
知道答主
回答量:3
采纳率:0%
帮助的人:4888
展开全部
我也遇到了一摸一样的问题,不知道该怎么办了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
uniw2009
2009-12-21 · 超过26用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:75.9万
展开全部
二级指针是存的是指针的地址,怎么表示二维数组?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式