2016 - 2024

感恩一路有你

稀疏矩阵转换为三元组 一个二维数组,a和*a有什么区别,C语言?

浏览量:1224 时间:2021-03-16 04:58:19 作者:admin

一个二维数组,a和*a有什么区别,C语言?

对于二维数组名a和*a,它们之间的区别在于类型。对于a[M][n]类型,当使用a时,可以等价于次指针的**类型。当使用*a时,它相当于类型*。从概念上讲,a表示二维数组a的第一个地址,而*a表示二维数组a的第一行a[0]的第一个地址。这在使用时会有所不同。例如,a[4]上的操作表示a的第四行的第一个地址,*a(*a)[4]上的操作表示第一行的第四个元素,即a[0][4]。所以除了相同的值外,a和*a在各个方面都是不同的。

C语言中一个二维数组,它的数组名是a那a和*a有什么区别?

在定义二维数组a[M][n]时,数组名称可以被视为二维指针,指向二维数组的第一个地址。所以a的值就是第一个地址的值。并且*a是a[0],a[0]是第一行的标记,表示第一行的第一地址。在二维数组中,所有元素都是紧密排列的,因此整个数组的第一个地址、第一行的第一个地址和第一个元素的第一个地址,即a、a[0]、&A[0][0]是相同的。所以a和*a的值是一样的。

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

从底层实现来看,无论是一维数组、二维数组还是多维数组,都是以一维方式排列在内存中。用一维阵列模拟多维阵列。从这一点出发,一维阵列可以解决多维阵列的问题。常用的模拟方法:

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

]用[y*nx]代替[y][x

]注意这里用一维数组代替二维数组

从代码清晰易读的角度来看,二维数组和多维数组是不同的有意义。有很多数据可以用二维数组或多维数组来表示。如果数据以适当的方式表示,算法将简洁明了。典型数据适合二维数组表示,如平面图形、矩阵。采用二维数组,程序清晰易读;采用一维数组,可读性要低得多。

与汇编语言相比,C提供了一些数据抽象,如数组、结构和联合。事实上,没有这些抽象,程序仍然可以被编程。但C语言的优点是具有高度的抽象性,非常适合于系统级程序的开发和维护。如果您认为C语言提供的抽象级别太高,那么汇编可能更适合您的项目。如果您认为C语言提供的抽象级别太低,那么有很多选择。从C、java到各种新语言,您可以尝试替换它们。

稀疏矩阵转换为三元组 二维数组怎么看几行几列 后根遍历和中序遍历一样吗

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。