【发布时间】:2017-08-31 22:32:38
【问题描述】:
我正在搜索 C 中的指针,我找到了this question。基本上,用户想知道如何在 C 中将矩阵作为函数的参数传递。投票最多的答案说他不能使用指向指针 (type ** identifier) 的指针,因为:
(...) 任何静态二维数组都要求第二级指针是指向静态数组的 const 指针
他说“指向静态数组的常量指针”是什么意思?以及这是如何编码的?我知道 const 变量(包含的指针)的含义,所以也知道静态变量。但是,在这种情况下,为什么它必须是指向静态数组的常量指针?
【问题讨论】:
-
您引用的文字毫无意义。看起来写它的人也删除了他的帐户
-
基本上声明
int array[x][y];(其中x和y是常量),您正在声明一个类型int [x][y]。当作为参数传递给函数时,第一级间接转换为指针。这意味着它将作为int (*)[y]传递,这与int **不同。int **是一个 pointer-to-pointer-to-int,int (*)[y]是一个 pointer-to-array-of-int[y](每个都大)。 -
“静态”在这种情况下可能意味着“与动态相反”。指针到指针的语法不是二维数组,而且大多数时候它也是不好的做法。见Correctly allocating multi-dimensional arrays。