none
.net中如何使用指针 RRS feed

  • 问题

  • 想请问一下,在vs中,如何使用指针的指针,

    即,将下面的c代码,如何在c#中运行通过呢?

        public unsafe static  bool FastA( float* inData,  float* outData, int dataSizeX, int dataSizeY,
                        float* kernel, int kernelSizeX, int kernelSizeY)
    {
       
        float** inPtr;
        float* outPtr;
        float *ptr;
        int kCenterX, kCenterY;
        int rowEnd, colEnd;                             // ending indice for section divider
        float sum;                                      // temp accumulation buffer
        int k, kSize;
    
        // check validity of params
        if(!inData || !outData || !kernel) return false;
        if(dataSizeX <= 0 || kernelSizeX <= 0) return false;
    
        // find center position of kernel (half of kernel size)
        kCenterX = kernelSizeX >> 1;
        kCenterY = kernelSizeY >> 1;
        kSize = kernelSizeX * kernelSizeY;              // total kernel size
    
        // allocate memeory for multi-cursor
        inPtr = new  float*[kSize];
    //.......其他算法代码
    }

        inPtr = new  float*[kSize];

    以及

     if(!inData || !outData || !kernel) return false;

    vs不让通过,.NET中应该着呢做呢?

    我希望别的地方不要进行较大改动的情况下进行。

    顺便说一句,我是讲c算法改为c#代码

    谢谢


    • 已编辑 07012220 2015年5月6日 5:12
    2015年5月6日 5:10

答案

  • // allocate memeory for multi-cursor inPtr = new float*[kSize]; //代码可以转为下列代码 float** temp = stackalloc float*[kSize]; inPtr = temp; if (!inData || !outData || !kernel) return false; //可以转化为下列代码 void* zero = IntPtr.Zero.ToPointer(); if (inData == null || inData == zero) { }

    以上为两种代码的转换结果

    • 已标记为答案 07012220 2015年5月19日 14:25
    2015年5月19日 12:42
  • ?????
    2015年5月9日 11:04

全部回复