引用二维数组的一个维度

Aar*_*ely 1 c

我有一些很好的C代码,但我不明白代码的一部分.在这一部分中,它传递一个方法,指向二维数组,只指定了一个维度.

这里是:

if (cmppt(pts[i*3], pts[hull*3])) 
      hull = i; 
Run Code Online (Sandbox Code Playgroud)

方法cmppt看起来像这样:

inline bool cmppt(const float* a, const float* b) { 
      if (a[0] < b[0]) return true;
      if (a[0] > b[0]) return false; 
      if (a[2] < b[2]) return true; 
      if (a[2] > b[2]) return false; 
      return false; 
} 
Run Code Online (Sandbox Code Playgroud)

数组pts是二维数组.我的问题是,当方法传递给两个数组时,例如pts [3]和pts [0]我怎么知道它看到的数组的哪个部分?似乎pts [0]查看数组第一维的第一个元素,而pts [3]查看数组第一维的第二个元素,但这没有意义.

谢谢

Ada*_*eld 5

pts[i*3]等价于&pts[i*3][0],它是指向i*32D数组的第r行的第一个元素的指针.同样,pts[hull*3]是指向hull*3数组的第r行的第一个元素的指针.

因此,该函数cmppt将指针指向数组的两行.它不知道它正在查看哪些行,它只知道它正在查看行.