数组地址加值和memcpy问题?
...
float* medFiltBuff = new float[25];
float[][] lp=[460][620];//设第一个标号460为行,第二个标号620为列
//对lp[][]一 一赋值,代码略
int cpy_block = 5 * sizeof(float);
for(int i = 2 ; i<460 - 2;i++)
{
for(int j = 2 ; j<620 - 2;j++)
{
for(int k=-2;k<=2;k++)
{
float *pSrc = &lp[i + k][j -2];
float *pDst = medFiltBuff + (k + 2)*5;
memcpy(pDst, pSrc, cpy_block);
}
}
}
...
想问:
1) 对pSrc取cpy_block数据块,就是取5个标号的数组段吧?但不知是从j -2 到j -2 + 4取列块,还是从i + k到i + k + 4取行块?
2) 执行memcpy(pDst, pSrc, cpy_block)时是否可以理解为从数组medFiltBuff的(k + 2)*5标号起连续5个标号的数组段值都被复盖?
[解决办法]
1,void *memcpy( void *dest, const void *src, size_t count );
看下参数原型就一目了然了
2,会覆盖掉目标数组位置后面的部分数据的