gpt4 book ai didi

c - 在没有 MAX_ELEMENTS 的情况下初始化数组是否更好?

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:39 25 4
gpt4 key购买 nike

int array[] = {2, 3, 4, 6};
int array[6] = {2, 3, 4, 6};
int array[MAX_SIZE] = {2, 3, 4, 6};

在第一个语句中,我没有提到数组可以容纳的元素数量。第二个数组可以容纳 6 个元素,第三个也可以容纳 6 个元素。当我使用 sizeof(array) 来确定大小时。第一个数组的大小为 16。第二个和第三个数组的大小分别为 24。

为什么我不喜欢第一个?因为它使用内存,所以它没有元素。如果是第二个和第三个,我会先告诉号码。它可以容纳的元素数量和大小变为 24。此外,我不能将该内存用于其他工作。

另一种初始化方法是使用 malloc(6 * sizeof(int)) 并调用 free(array)。这将允许我使用未使用的内存。但是为什么我应该这样做,因为 array[] 使用内存作为它拥有的元素的数量。 malloc 也做同样的事情,但它很容易编写和内存 array[]

最佳答案

Q: Is it better to initialize the array without the MAX_ELEMENTS?

A:这取决于你想做什么!


使用这个:

int array[] = {2, 3, 4, 6};

当您希望数组具有与初始化过程中的元素一样多的单元格时。请注意,int array[4] = {2, 3, 4, 6}; 是等效的。

使用这个:

int array[6] = {2, 3, 4, 6};

当您知道您将需要更多单元格时,这些单元格将在初始化过程后被填充。

这个:

int array[MAX_SIZE] = {2, 3, 4, 6};

MAX_SIZE = 6 时等同于上述情况。


你应该检查这个:

Difference between static memory allocation and dynamic memory allocation

还有这个用于 sizeof() 运算符:

How do I determine the size of my array in C?


因此,如果您确切知道数组将包含多少个元素,请使用静态内存分配,如果您不知道,请使用动态内存分配。

关于c - 在没有 MAX_ELEMENTS 的情况下初始化数组是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com