我想知道数组如何在 c 中工作。我最终得到一个假设,我想知道我是否正确。
我们知道数组是一系列相邻的内存案例(盒子),其中每个盒子都有它所存储类型的大小(即,如果 INT 一个盒子的 size = sizeof(int) 并且一个由 3 个 INT 组成的数组占用内存相邻位置3 sizeof(int) )
现在我们也知道我们可以为特定类型的数组动态分配内存(C 中的 malloc,C++ 中的 new)。
让我想知道的是,当使用括号 [0] 调用数组时,数组的原点是数组第一个框的地址和第一个值(后面框中的值)是 array[0] = = *(array+0) == *array(数组是否被声明为“type * array”或“type array[]”或“type array[size]”)和“array”以这种方式调用,无论定义为指针还是一个数组(“type * array”或“type array[]”或“type array[size]”)是第一个盒子的地址。
我最终想到,我想确认一下:即使用方括号 ([]) 声明的数组实际上在内存中也是一个 n 指针序列,每个指针都包含(作为值而不是地址)的地址一个包含实际值的记忆框 Bi + 那些记忆框(B0,...,Bn 每个都包含实际值)。这样,当一个人声明“int array[5]”时,程序实际上分配了 5 个相邻的 int 指针框 P0、P1、..、P4 和 5 个 int 大小的内存位置,分散在计算机内存 B0、B1 中。 ..,B4 其中 Pi 的值是 Bi 的地址
我是对还是错!???谢谢!