我正在搜索C中的指针,我发现this question。基本上,用户想知道如何将矩阵作为C中函数的参数传递。最多投票的答案说他不能使用指向(类型**标识符)的指针,因为:
(...)任何静态2D数组都要求第二级指针是指向静态数组的指针
当他说“const指向静态数组”时,他的意思是什么?以及如何编码?我知道const变量(包括指针)的含义,以及静态变量。但是,在这种情况下,为什么它必须是指向静态数组的const指针?
答案 0 :(得分:1)
当他说“const指向静态数组的指针”时,他的意思是什么?
我认为他的意思是说阵列需要被视为连续的;它需要一个接一个的元素序列,没有指针空间。他可能试图声称取消引用一次二维数组(例如*mat
或mat[0]
)应该产生指向子数组的常量 (在某些情况下也是不正确的,其中一个我将很快介绍,当用作sizeof
的操作数时)。
FWIW,这也是错误的:
如果矩阵是动态数组,则前一个标题是正确的。
int mat[SIZE][SIZE];
如果我们检查此对象,则sizeof mat
等于sizeof (int) * SIZE * SIZE
;此矩阵中没有任何指针存储空间。但是,在void ins (int **matrix, int row, int column);
中,int **matrix
告诉我们matrix
指向int *
,这意味着 指针的空间,并且暗示<{1}} 可能不是连续的。
......这是如何编码的?
对于该问题,错误地,matrix
指向int **
个对象,而不是int *
个对象。
...为什么它必须是指向静态数组的const指针?
请参阅本答案的第一段。