指多维数组中列数的控制 5

发布于 科技 2024-08-22
12个回答
  1. 匿名用户2024-02-01

    多维数组本质上是一维数组,因此可以用一级指针和步长的组合来求解,如下所示:

    #include

    int sun[4][7]=,6,8,33,44,46,34},33,66,12,34,56,676},45,132,453,545,434,1,44}};

    int main()

    int i,j;

    int* p;

    for(p=(int*)&sun[0];p<(int*)&sun[4];p+=7) 强制转换,然后将步长递增到列数。

    p=0;for(j=0;j<4;j++)

    printf("");

    for(i=0;i<7;i++)

  2. 匿名用户2024-01-31

    由于你对太阳阵列的定义,第二维是 7;

    int sun[4][7]

    如果定义指向数组的指针,则列数至少为 7,否则是错误的。

  3. 匿名用户2024-01-30

    p 是指向一个 int 数组的指针,数组大小为 7,那么这个指针可以访问的范围是从数组地址开头到 +7 的位置,如果数组大小定义为 4,那么指针 p 的有效访问范围是 +4,访问就会越界。

  4. 匿名用户2024-01-29

    书中提到的行指针和列指针对你来说很容易理解,但实际上,C语言中并没有行指针和列指针的概念。 线指针是指向一个数组的指针,例如,如果有一个二维数组 int a[10][20],那么 a 可以用作线指针,但它的类型是一个数组,可以自动转换为 int (*a)[20],即指向长度为 20 的数组的指针。 由于它是一个指针,*p 是它指向的内容,所以 *p 是一个 20 长度的数组,称为列指针。

    行指针和列指针根本不是同一类型,它们不能相互指向,同一行和同一列没有任何意义,就像你和同学的生日一样,只是巧合。 如果真的有问题,可以拿出来,看看可以用什么方法解决。

  5. 匿名用户2024-01-28

    这是二维数组的行地址和列地址的问题。

    对于二维数组,有行地址和列地址以及具体元素,行地址——列地址———具体元素,它们的秩降低, a[3][3],如果要声明指向数组 a 的指针,应该是 int **p,或者 (*p)[3],第一个是声明二级指针,因为二维数组的数组名称是二级指针, 第二个是声明一个指向具有 3 个元素的 1 位数组的指针,它们都可以执行此 p=a。 对于二维数组 a 是行地址,取 * 成为列地址,取 * 对列地址成为具体元素。 所以取 * 是降级操作。

    你的第一个问题,因为 p 是二级指针,把 * 带到 p 就变成了一级指针,他们不能赋值,等号和左右一定是同一级别,你知道的。

    第二个问题是,取 * 或下标 [ ] 作为行地址会使行地址变成列地址,如果内容被取,列地址会变成行地址,但这个值对于取 * 下标后的二维数组还是有意义的。

    应该对你有所帮助......

  6. 匿名用户2024-01-27

    下面是一个示例,您将了解:

    假设一个数组 a[3][7],即一个 4 行 8 列的矩阵,每行 8 (0-7),总共 4 (0-3) 行。

    指定一个元素,例如 a[2][5],并根据上述公式替换 =a[0]+2*7+5

    a[2][5] 是什么意思,是第 3 行 a[0]+2*7+5 的第 6 个元素是什么意思,即从第 0 行和第 0 列开始计数,经过前 2 行 (2*7),然后经过 5 个数字 (5),现在到达第 3 行的第 6 个数字。 这正是 a[2][5] 所在的地方。

    明白了?

  7. 匿名用户2024-01-26

    a[0] 是表示 a[0][0] 地址的列地址,i*n+j 是第一个元素之后的元素,两者相加即为任意元素 a[i][j] 的地址。

  8. 匿名用户2024-01-25

    不矛盾。 需要注意的是,zippo[0] = zippo 只是意味着它们在数值上相等,就像 100 和 100 个框在数值上等于 100 一样。

    但是 zippo[0] 是指向 int 的指针,zippo 是指向简单指针的指针,通过 zippo[0] 系统知道它是一维指针,所以可以得到一维数组,而 zippo 是二维的,系统可以得到一个二维数组,但无论多维,它们都是从同一个内存地址开始的。

  9. 匿名用户2024-01-24

    房东:)这里我画了一张一旦山脊烧掉的记忆图,你可以通过看虚来理解它——在简化过程中,假设它是这样一个二维数组,你要注意一件事:zippo[0] 不等于 zippo[0][0]!

    从图中可以看出,zippo[0] 实际上是第一行(第一行还有两个单元格)。 所以 zippo 只是一个“行条目地址”——如果默认情况下,那么 c 或 c++ 默认 zippo=zippo[0]=&zippo[0][0],如 **: include 所示

    #includeint main()

    system("pause");

    亲眼看看,这三个印刷的数字是一回事吗?

  10. 匿名用户2024-01-23

    相同的地址和山校盲人并不意味着去引号*后得到的值是一样的,因为两种类型不同,所以决定理解引用后羡慕岭的逗号值不同,zippod 的类型是 int [4][2],而你的 zippo[0] 的类型是 int [2]。

  11. 匿名用户2024-01-22

    假设 a[3][5] 的内存布局如下:

    a、a[0] 和 a all 指向数组的内存块的第一个地址(3*5*4=60 字节)。

    a 的类型是一个二维数组,它指的是整个内存块的第一个地址,即 0 处的地址。

    类型 a[0] 是一个一维数组,它指的是存储器块 0 1 2 3 4 的第一个地址,它也是 0 处的地址。

    A 表示 a 的值,它完全等价于 a[0]。

    a[1] 占用的空间为 5 6 7 8 9,20 字节 a[2] 占用的空间为 10 11 12 13 14,20 字节。

  12. 匿名用户2024-01-21

    A指向数组的第一个地址,即a[0][0]的地址,其中大部分是存储在计算机中的数组,以两位为例,a[3][5]在计算机存储顺序中为a[0][0]、a[0][1]、a[0][2]、a[0][3]、a[0][4], a[1][0]、a[1][1]、a[1][2]、a[1][3]、a[1][4]。

    a[2][0],a[2][1],a[2][2],a[2][3],a[2][4].a 是数组第一个元素的地址,也是数组的地址,即 a[0][0] 的地址。

    二维数组也可以看作是一维数组,数组元素是数组,a[0][0],a[0][1],a[0][2],a[0][3]a[0][4]是第一个元素,a[1][0],a[1][1][1],a[1][2],a[1][3],a[1][4]是第二个元素,a[2][0],一个[2][1],一个[2][2],一个[2][3],一个[2][4]。对于第三个元素。 所以a[0]是数组a[0][0],a[0][1],a[0][2],a[0][3]的数组名称,所以第一个元素的地址地址是a[0][0],a[1]是a[1][0],a[1][1],a[1][2],a[1][3],a[1][4]数组名称,a[1]表示a[1][0]的地址, a[2] 是 a[2][0]、a[2][1]、a[2][2]、a[2][3]、a[2][4]。

    数组的名称,因此它是 a[2][0] 的地址。 实验证明。

相关回答
5个回答2024-08-22

#include

我没有写完会议以找到最大值。 >>>More

20个回答2024-08-22

首先我想解释一下:数组名称是一个指针,它指向存储数组元素的一段内存,那么数组元素是如何引用的,我给大家举个例子。 例如,a[3],编译系统将首先找到数组的第一个地址,即a,然后根据中的值确定地址偏移量,即3,从而确定要引用的元素是地址a+3所指向的单元的内容。 >>>More

4个回答2024-08-22

请注意,在 C 中,指针变量上的 +1 不会使其地址值为 +1,而是将该类型的一个变量的长度相加,例如声明双精度 *a; a+n 的值是 a 的地址值加上 n 个双精度类型变量的字节长度; >>>More

7个回答2024-08-22

a) int *b[ ] 错误,指针必须指向受控的已知内存地址。 >>>More

6个回答2024-08-22

我用你的程序在我的turbo c中运行它,结果编译好了,除了矿井的区别,其他英文输出是一样的,去掉了main函数前面的&ga符号后,结果还是和之前的一样。 >>>More