C语言多个数组取数如何优化

下面的程序 写法有点繁琐,能不能换其它写法。


u8 table1[4]={0x12,0x34,0x56,0x78};
u8 table2[4]={0x12,0x34,0x56,0x78};
u8 table3[4]={0x12,0x34,0x56,0x78};
u8 table4[4]={0x12,0x34,0x56,0x78};

u8 test(u8 sel1,u8 s2)
{
  u8 temp1;
  if(sel1==0)temp1=table1[s2];
  else if(sel1==1)temp1=table2[s2];
  else if(sel1==2)temp1=table3[s2];
  else if(sel1==3)temp1=table4[s2];

  return temp1;
}

回答不易,有用请采纳:
可以使用数组指针来简化代码,代码如下:


u8 table1[4]={0x12,0x34,0x56,0x78};
u8 table2[4]={0x12,0x34,0x56,0x78};
u8 table3[4]={0x12,0x34,0x56,0x78};
u8 table4[4]={0x12,0x34,0x56,0x78};

u8 test(u8 sel1,u8 s2)
{
    u8* tables[4] = {table1, table2, table3, table4};
    return tables[sel1][s2];
}