C语言练习--指针练习

main()
{
  int i;
  char **p;
  int msg[16]={0x40, 0x41, -1, 0x00, 0x01, -1, 0x12, -1, 0x20, 0x27, 0x41, 0x35, -1, 0x51, 0x12, 0x04};
  char* strar[]={"bejing", "shanghai", "guangzhou", "guangdong", "Tokyo", "American"};
  char* (*pstrar)[6];
  
  pstrar = &strar;
  p = strar;

  for(i=0;  i<16; i++)
  {
      if(msg[i] == -1)
       {
          putchar(' ');
          continue;
       }
       else if(msg[i]&0xF0 == 0x40)
       {
         putchar(p[msg[i]>>4][msg[i]&0x0F]);
         continue;
       }
       else if(msg[i]&0xF0 == 0x30)
       {
         putchar(*(strar[msg[i]>>4]+(msg[i]&0x0F)));
         continue;
       }
       else
       {
         putchar(*((*pstrar)[msg[i]>>4]+(msg[i]&0x0F)));
       }
   }
}

这道题到底如何解

哪里不清楚呢?首先是数组值的判断,符合要求就显示pstrar数组的值。

0x开头的数字是16进制的数字。

程序运行结果如上,万望采纳。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632