(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]?
能举个例吗? 展开
但intArr只是一个int*的类型,而不是int**;这和C/C++不一样。
现在的问题是,如何像C/C++那样,用int** intPtr;来指向这个二维数组,并用*(*(intPtr+i)+j)的方式得到intArr[i,j]?
怎么用*(*(intPtr+i)+j)的方式得到intArr[i,j]?
能举个例吗? 展开
5个回答
展开全部
其实,毕竟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#可以说禁止使用了.
在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#可以说禁止使用了.
展开全部
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;//指向下一行数组的首个字节
}
}
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;//指向下一行数组的首个字节
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++没学好,不太懂你的意思。
c#本身肯定能实现你这个功能的。
如果你对c++很熟c#不熟的话,你直接把方法申明为unsafe的,这样就可以直接使用指针了。
c#本身肯定能实现你这个功能的。
如果你对c++很熟c#不熟的话,你直接把方法申明为unsafe的,这样就可以直接使用指针了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也遇到了一摸一样的问题,不知道该怎么办了~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二级指针是存的是指针的地址,怎么表示二维数组?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询