二维数组声明时,第一维不能省略的原因

Mr.Hddcpp小于 1 分钟...

二维数组声明时,第一维不能省略的原因

在二维数组的声明中,既可以行和列都指定值,也可也省略第一维。

int a[2][3];    // 行列都指定
int b[][10];    // 只指定列

在语言中的多维数组只是抽象意义上的多维数组,其本质都是由若干个长度相同的一维数组组成的,而二维数组中的第二维度就是一维数组的长度

编译器对数组元素绝对寻址的原理

例如有数组 int a[n][m] ,当访问 a[i][j] 时,通过以下算式获取 a[i][j] 的绝对地址 local[i][j]

local(i,j)=local(0,0)+i×m×sizeof(int)+j×sizeof(int) local(i,j)=local(0,0)+i×m×sizeof(int) + j × sizeof(int)

通过上面算式可以看到使用到了初始的列值 m ,而未使用行值 n.

你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.9