C(动态)阵列(固定大小)

时间:2014-09-20 16:28:25

标签: c arrays dynamic stack push

你好我想知道为什么这样做起因为在教程上这样总是列出数组必须是固定大小的,除非动态地用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还要贵吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

C99引入variable length array,其长度不是常量表达式。声明

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

tmp声明为VLA。