gpt4 book ai didi

c - 如果 C 有指针,为什么它需要数组?

转载 作者:太空狗 更新时间:2023-10-29 17:05:53 25 4
gpt4 key购买 nike

如果我们可以使用指针和malloc 来创建和使用数组,为什么C 中存在数组类型?如果我们可以使用指针代替,不是没有必要吗?

最佳答案

数组比动态内存分配更快。

数组在“编译时”“分配”,而 malloc 在运行时分配。分配需要时间。

此外,C 并不强制要求 malloc() 及其友元在独立实现中可用。


编辑

数组示例

#define DECK_SIZE 52
int main(void) {
int deck[DECK_SIZE];
play(deck, DECK_SIZE);
return 0;
}

malloc() 示例

int main(void) {
size_t len = 52;
int *deck = malloc(len * sizeof *deck);
if (deck) {
play(deck, len);
}
free(deck);
return 0;
}

在数组版本中,deck数组的空间是编译器在创建程序时预留的(当然,内存只在程序运行时预留/占用) ),在 malloc() 版本中,每次运行程序时都必须为 deck 数组请求空间。

数组永远不会改变大小,malloc 的内存可以在需要时增长。

如果您只需要固定数量的元素,请使用数组(在您的实现范围内)。如果您需要在程序运行期间可以增长或收缩的内存,请使用 malloc() 和 friend 。

关于c - 如果 C 有指针,为什么它需要数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652808/

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