C语言知识点---局部数组的长度可以用变量来定义

首先我们知道C语言中,全局数组在定义的时候必须给定长度,而且长度必须是常量。一直没注意函数内部的局部数组在定义的时候长度可以为变量。具体见下例:

#include <stdio.h>
#include <stdint.h>

int main(void)
{
    int a = 5;
    uint8_t tmp[a];  //变量a作为tmp数组的长度 

    for(int i = 0; i < a; ++i)
    {
        tmp[i] = i;
        printf("tmp[%d]=%d ",i, tmp[i]);
    }
    printf("\n");
    return 0;
}

gcc编译器输出如下

C:\Users\username\Desktop\C_CPP>gcc local_arry.c -o local_arry

C:\Users\username\Desktop\C_CPP>.\local_arry.exe
tmp[0]=0 tmp[1]=1 tmp[2]=2 tmp[3]=3 tmp[4]=4