为什么两个相邻的数组不连续存储

发布于 教育 2024-08-14
22个回答
  1. 匿名用户2024-02-01

    内存分配是随机完成的。 这样,连续定义的两个数组可能是连续的,也可能不是连续的。 这取决于内存的分配。

  2. 匿名用户2024-01-31

    在定义数组时,内存空间的分配是随机的,任何东西都可以诞生!

  3. 匿名用户2024-01-30

    首先,你犯了一个错误,在 c 中,数组下标从 0 开始,所以 a[2] 和 b[2] 根本不存在。

    其次,C语言不做任何边界检查,这项工作是由程序员自己完成的,所以在使用数组时,要特别注意越界的问题。

    作为这个程序的结果,事实证明数组 a 在内存中的位置紧跟在数组 b 之后,所以当你的数组越界时,b[2] 的位置与 a[0] 的位置重合,并且 a[0] 会发生变化。

    至于你说什么时候改成j,你有没有注意**? scanf("%d",&b[i]);

    您正在使用 i。 在这种情况下,i=3,因此 b[3] 实际上更改为 a[1]。 如果你试一试,你就会发现。

  4. 匿名用户2024-01-29

    原因是你的for循环是立方的,但你的数组的大小只有2,所以你的行为是越界的,它是未定义的,两个数组分配的空间可能是相邻的,因为c本身不检查越界,所以你把它修改为相邻的内存空间。

  5. 匿名用户2024-01-28

    数组溢出,结束条件应该小于 2,检查内存就知道了,a 不能存储并且没有边界检查,自然向下扩展。

  6. 匿名用户2024-01-27

    您的数组已超出界,只需将 i<3 更改为 i<2。

  7. 匿名用户2024-01-26

    第一个问题是连续的,数组是连续的,第二个不是。

  8. 匿名用户2024-01-25

    第一个是连续的,第二个不是。

  9. 匿名用户2024-01-24

    你问题的核心应该是问如何获得连续的内存空间,这可以通过malloc来实现。

  10. 匿名用户2024-01-23

    因为数组是从 x[0], x[1] 派生的。 这样,xes 数组中的第一个数字是 x[0]。根据 for 循环中的 a[i-1],可以看到 i=1,因此操作可以从 a[0] 开始。

    由于两个相邻元素是依次相加的,因此它应该是 x[i]+x[i-1],这确保了第一组数字被添加到 a[0]=x[0]+x[1]。

  11. 匿名用户2024-01-22

    1.至于物理地址的分配是否连续,则与系统底部的堆空间分配算法有关,只能说可能是连续的,也可能是不连续的,这取决于系统的算法。

    2.但是这并不影响你在应用层的使用,一般你的应用程序看到的地址是什么样子的,怎么用,直接使用堆给你的地址绝对是对的!

    3.请求分配的空间是连续的,可以使用自加减运算符(++,除非有一个系统可以... B逆天而行,开个玩笑,呵呵。

  12. 匿名用户2024-01-21

    分配给您的虚拟内存空间当然是一个连续......至于物理内存,一般不需要管理,操作系统会负责......

  13. 匿名用户2024-01-20

    是连续的,可以用运算符寻址。 只是要小心不要越界并导致非法访问。

  14. 匿名用户2024-01-19

    你误解了这本书的意思吗? 一个应用的内存是连续的,两个应用的内存是两个连续的块,但两个块不一定连接。

  15. 匿名用户2024-01-18

    new分配的空间是连续的。

    它可以是 a++、a--

  16. 匿名用户2024-01-17

    理论上不是,数组是相同类型的数据的集合。

  17. 匿名用户2024-01-16

    好吧,数组中的数据类型应该都是相同的。 如果具有不同的数据类型,则可以定义包含所需数据类型的结构,然后定义结构数组。

  18. 匿名用户2024-01-15

    普通数据是不可能的,但有一种数据叫做公共体,可以用来存储不同类型的数据。 定义方法示例如下:

    union icf

    icf arrdate[5];

    arrdate[0].i=3;

    arrdate[1].c='a';

    arrdate[2].f=;

    那么 arrdate 的第一个元素是整数,第二个元素是字符,第三个元素是浮点型。

  19. 匿名用户2024-01-14

    #include

    int main(void)

    最好不要这样做,即使你的记忆中有什么并不重要。

  20. 匿名用户2024-01-13

    通常,struct 成员持续存储在内存中。

  21. 匿名用户2024-01-12

    这不一定,结构体占用的内存是连续的,但其中的各个成员不一定是连续存储的,这取决于结构体中定义的成员的顺序是否字节对齐,如图所示。

  22. 匿名用户2024-01-11

    结构的成员不一定必须在内存中是连续的,因为可以释放某些单元以满足对齐要求。 例如:

相关回答
16个回答2024-08-14

假设地面上有 10 盏路灯,我们可以使用长度为 10 的数组来表示这些路灯的状态,其中 1 表示亮,0 表示熄灭。 我们需要找出两个相邻数字之间有多少个长橙子。 >>>More

27个回答2024-08-14

如果要接受 A 数组中的所有数字,而 B 只接受满足条件的数字,则会使 B 无法正常输出,在这种情况下,初始化 B 并包含 >>>More

19个回答2024-08-14

首先,x 的初始值为 2

在第一个循环中,打印 *,然后 x--,x 变为 1。 然后判断 x>=0 满足,继续循环; >>>More

12个回答2024-08-14

有 3 种类型的问题:1 个交叉点、2 个交叉点和 3 个交叉点。 >>>More

4个回答2024-08-14

数组和指针是 C++ 中一个困难的部分,为了理解和使用它们,您必须首先了解编译器如何处理指针类型。 >>>More