C 二维数组 : Is the first 'level' an array of pointers?

标签 c pointers multidimensional-array

在 C 中,我们有二维数组,即 a[m][n]

在一维数组中,a 是指向数组开头的指针。

二维数组呢? a[i] 是否包含指向数组中 i 行开头的指针?因此 a[i] 是一个指针数组,在下面的事情 function(int **a, m, n)?

最佳答案

Does a[i] hold a pointer to the start of the i row in an array?

没有。 C 中二维数组的数据是一个连续的元素 block 加上一些巧妙的索引访问。但是二维数组是数组的数组,而不是指针的数组。

形式上,a[i] 包含一维数组。在某些上下文中,这可能会衰减为指向第 i 行的第一个元素的指针,但它的类型仍然是 T[n],对于某些类型 T 你还没有指定。

关于C 二维数组 : Is the first 'level' an array of pointers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28540390/

相关文章:

pointers - golang 异常规则 "interface pointer can' t 实现接口(interface)”

c# - 如何使用随机选择二维数组中的位置?

Java:文本文件到二维数组

java - 如何在没有嵌套循环的情况下对数组求和?

c - 将数组传递给 scanf 函数和变量

c - 文件签名C

c - 如何在 C 中创建预定义变量数组

c++ - 创建对象数组时出现段错误

c - Switch-Case 语句似乎卡住了我的循环

C++ 将 vector 传递给函数 : reference vs. 指针,哪个是首选?