我正在努力学习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/