将2D数组元素分配给单个指针

将2D数组元素分配给单个指针

我正在努力学习C语言。我是C语言编程的新手。我有以下功能。

/*dA would be a pointer to a 2D array*/
    void normalizeCols(float* dMu, float* dSigma, float* dB, float* dA, int n){
       int col, row;
       for(col=0; col < n; col++)
           /*Step 1: calculating mean*/
            float tempMu = 0.0;
            dMu = &tempMu;
            for (row=0; row < n; row++){
                /*I am adding all the elements of the column*/
                dMu += *(*(dA+row)+col); //ERROR: operand of * must be a pointer
            }
            /*dividing dMu by number of dimension(square matrix)*/
            dMu /= (float) n; //ERROR: expression must have arithmetic or enum type
            //More code here
       }
}

我想找出一个专栏的意思。我得到这两个错误,我已经在上面的片段评论。我该怎么解决?

最佳答案

如果您知道矩阵是平方的(即行长度n也就是行数),只需手动寻址。
然后,内环变成:

       /*Step 1: calculating mean*/
       float tempMu = 0;
       for (row=0; row < n; row++){
           /*I am adding all the elements of the column*/
           tempMu += dA[col * n + row];
       }
       /*dividing dMu by number of dimension(square matrix)*/
       tempMu /= (float) n;

另外,使输入参数变得更清晰,并将const切换到int
当然,要确保访问的顺序正确(行主键或列主键),否则会出现可怕的缓存抖动。

关于c - 将2D数组元素分配给单个指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22304519/

10-09 23:02