请大神帮解释下这段代码,关于argc,argv方面击

请大神帮解释下这段代码,关于argc,argv方面打
void getparm(int argc,char *const argv[],int *port,int *slotnum)
{
  char c;
  std::cout<<"argc:"<<argc<<"-----------argv"<<argv<<"  "<<port<<"     "<<slotnum<<"\n";

  *port = 10728;
  *slotnum =32;//defalut

  struct option my[]=
    {
      {"port",1,0,'p'},
      {"num",1,0,'n'}
    };
  while((c=getopt_long(argc,argv,"p:n:dft",my,NULL))!=EOF)
  {
    switch(c)
    {
    case 'p':
      *port = atoi(optarg);
      break;
    case 'n':
      *slotnum = atoi(optarg);
      break;
    case 'd':
      g_bDebug = true; //show the running info
      break;
    case 'f':
      g_bFileRec = true;//record slot data
      // std::cout<<"FLAG OPEN\n";
      break;
    case 't':
      g_bTimeRec = true;
      break;          //time show;
    default:
      if(g_bDebug)
        std::cout<<"parmer error"<<std::endl;
      break;
    }
    
  }
}
主要是struct option,看不懂下面的东西了,,网上看了些资料还是不明白,,,,谢谢啦
------解决思路----------------------
 struct option my[]=
    {
      {"port",1,0,'p'},
      {"num",1,0,'n'}
    };

定义结构体数组对象my,并初始化my[0]={"port",1,0,'p'}, my[1]={"num",1,0,'n'}




------解决思路----------------------
 struct option my[]=
    {
      {"port",1,0,'p'},
      {"num",1,0,'n'}
    };

定义结构体数组对象my,并初始化my[0]={"port",1,0,'p'}, my[1]={"num",1,0,'n'}




------解决思路----------------------
http://blog.****.net/cashey1991/article/details/7942809
------解决思路----------------------
http://baike.baidu.com/link?url=G_qUdfcJI3S5VnKkUr9YhuIxSseoPvtQfI19cgDnSXKEj78iBmhJiseQeW3_V7-z6aITeddGzysx9b5u33NnG_
------解决思路----------------------
无非就是一个结构体而已,实在看不懂的话,分块拆分以下就好了
------解决思路----------------------
传说中linux有个man命令,久而久之,网上就出现了很多翻译过来的高手,不明白就到linux下
输入: man getopt_long  
------解决思路----------------------
请大神帮解释下这段代码,关于argc,argv方面击