关于嵌套循环和数组访问的困惑

时间:2011-10-18 22:10:18

标签: c++

我有一些C ++,我正试图移植,我对几行以及他们究竟在做什么感到困惑。代码如下。变量 im 是一个大小为num_rows by num_cols的2D float数组。

for(x=0; x < num_cols; x++){
   float *im_x_cp = im[1]+x; //(1)
   for(y = 1; y < num_rows; y++, im_x_cp+=num_cols){
      float s1 = *im_x_cp;
      //et cetera
   }
}

标记为(1)的代码对我来说特别困惑。 2d数组 im 的哪一部分是这个引用?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

im[1]是指向浮点数组的指针,也就是说,它是矩阵的第二行/列。 im[1] + x是坐标(1,x)处元素的指针(调用指针运算如何工作),s1是其值。

答案 1 :(得分:1)

im[1]的类型为float *。所以,根据C ++指针算法的规则:

  float* im_x_cp = im[1];
  im_x_cp = im_x_cp + x;

现在是float*指向该切片中的项目“1 + x”。