为什么我觉得C语言中二维数组没用,明明两个一维数组就能解决,为什么要有二维数组存在?

石福晋


我也觉得C语言没用,明明可以用汇编语言解决的,为什么要用C语言?

你的论点和上面这句话一样!

二维是来源于数学的平面坐标,两个不同方向的维度,在C里面的a[x][y]就很清晰地展现二维定位,就如同a(x,y)

所以使用二维数组会更清晰明了地展现数据结构,比起你绕着弯用一位数组来模拟二维数组,更容易让别人清楚你的编程思路。


gzluke


我也来说说。


C语言没有专门的二维数组

首先,C语言中,基本类型里有“数组”,也就是一维数组。而我们平时所说的二维数组是元素为数组的数组,其实是一种用一维数组对二维数组的模拟。


一维数组可以解决多维问题

从底层实现来说,无论是一维数组、二维数组还是多维数组,在内存中都是以一维方式排列的。而多维数组也是用一维数组模拟实现的。从这一点来说,一维数组就能解决多维数组的问题。常见的模拟方式:

  • 将 二维数组a[m][n]表示为一维数组a[m*n]

  • 用a[y*n+x]代替a[y][x]

  • 注意这里是用一个一维数组代替二维数组,而不是用两个一维数组代替二维数组


多维数组有其存在的必要

从代码清晰易读的角度来说,二维数组、多维数组是有意义的。有许多数据是适合用二维数组或多维数组表示的。以适合的方式表示数据,算法的编写也会简洁明了。典型的适合二维数组表示的数据如平面图形、矩阵。用二维数组表示,程序清晰易读;如果用一维数组表示,其可读性就会低不少。


相对于汇编语言,C提供了一定的数据抽象,如数组、结构体(struct)、联合(union)。其实没有这些抽象,程序照样能编。但C语言的好处就在这里,它提供的抽象程度,非常适合系统级程序开发和维护。如果觉得C语言提供的抽象程度过高,也许汇编更适合您的项目,如果觉得C语言提供的抽象程度过低,那选择就多了,从C++,Java到现在的各种新语言,都可以尝试更换。


和不同


两条边的面积等于矩形的面积吗?


分享到:


相關文章: