uchar code table[]数组为什么还可以这么定义

uchar code table[]数组为什么还可以这么定义

#include 
#define uchar unsigned char 
uchar j,k,i,a,A1,A2,second; 
sbit dula=P2^6; //锁存器控制端定义
sbit wela=P2^7; 
uchar code table[]=
{ //数字编码
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
void delay(uchar i)//延时函数
{
    for(j = i;j>0;j--)
        for(k=125;k>0;k--);
}
void desplay(uchar sh_c,uchar g_c)//段选
{
    dula = 0;
    P0 = table[sh_c];//显示十位
    dula =1;
    dula = 0;
    wela = 0;
    P0 = 0xfe;
    wela = 1;
    wela = 0;
    delay(5);//亮5ms
    P0 = 0xfd;
    wela = 1;
    wela = 0;
    delay(5);//亮5ms
    

}
void main()
{
    while(1)
    {
        if(second==60)//判断是否到60
            second = 0;//如果到了则清零
        A1 = second/10;//分离出10位和个位
        A2 = second%10;
        for(a = 50;a>0;a--)//显示部分,至于时间大概时多少
        {                    //请用户用软件仿真看时间约等于1s
            display(A1,A2);//便可,如果需要精准确定时请用定时器
        }
    
    }

    
}

这不是很正常的数组定义吗?你觉得哪里有问题?


uchar code table[]={ 1,2,3,4};//数组长度4
uchar code table[]={ 'a','b','c'};//数组长度3
uchar code table[]="hello";
// 这种定义是常用的,是语法允许的