我有一些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 的哪一部分是这个引用?
提前感谢您的帮助。
答案 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”。