gpt4 book ai didi

C(动态)数组(固定大小)

转载 作者:行者123 更新时间:2023-11-30 17:28:47 25 4
gpt4 key购买 nike

您好,我想知道为什么这在教程中有效,因此它总是列出数组必须具有固定大小,除非使用 malloc 动态创建数组。

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv) {
if(argc < 2)
return 0;

int tmp[ atoi(argv[1]) ];


printf("sizeof tmp equals to %d\n", sizeof tmp);
return 0;
}

执行此操作时,ASM 级别的后台会发生什么?它是如何运作的?它是否在堆栈上分配启动程序时给定的大小以及堆栈的最大值是多少?

这是否比使用 malloc 更昂贵?

提前致谢。

最佳答案

C99介绍variable length array其长度不是常量表达式。声明

int tmp[ atoi(argv[1]) ];  

声明tmp为VLA。

关于C(动态)数组(固定大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950909/

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