彻底理解 C 语言的数组在内存中到底是怎么存放的!

彻底理解 C 语言的数组在内存中到底是怎么存放的!

在C语言中,数组是经常被用到的重要数据类型,但在实际使用时,往往有很多工程师会出现各种各样的问题,如内存越界、错误的访问、初始化不当等。这其中有很大一个原因是没有彻底理解数组的存储机制,出现了一些非法地址或者非预期元素的访问和引用。因此,今天就来详细讲一下在C语言中,数组到底是怎么存储的。

首先我们来看一个一维数组:

int array[10] = {0};

这是最简单的数组,其内存结构也是最容易理解的,编译器会在内存中划出一段连续的空间用于存储这个数组的元素,并且对于 int 类型来说,每个元素占用的大小为 4 字节。因此,其内存排列如下:

我们可以用下面一段代码验证一下:

#include

int main() {

int array[10] = {0};

for (int i = 0; i < sizeof(array) / sizeof(array[0]); i++) {

printf("array[%d] - %p - %ld\r\n", i, &array[i], (&array[i] - array) * 4);

}

return 0;

}

上面这段代码会将数组每个元素的元素

相关文章