c-Do平面阵列和2D阵列使用相同数量的内存



在编写C代码以回答一个关于内存有限的问题时,我想知道使用平面数组而不是(矩形)二维数组(编译时已知其大小)是否可以节省内存空间。

那么,例如char a[200][100]是否比char a[20000]使用更多的内存空间?

(我知道在某些语言中是这样,但这是关于C的)

那么,例如char a[200][100]比char a[20000]使用更多的内存空间吗?

否,char a[200][100]使用的内存量与char a[20000]相同。

两者都需要能够容纳20000 char s的连续内存。

[200][100]和[2000]之间没有区别。对于a[200][100]C,使用列数来计算偏移量,因为a只是指向char类型内存的指针。因此,如果你想要一个[20][5],那么C会计算一个[20][5]=*(a+20*100+5);我应该提到C是行主(或者在计算中使用行优先)。

因此,如果你知道数组的维数,你可以用[2000]进行同样的计算。

从软件通信的角度来看,如果它是静态的,我会使用char a[200][100],因为它通信的结构是200行乘100列。这样编译器就可以为您进行计算。

相关内容

  • 没有找到相关文章

最新更新