switch循环的一个小bug解决方案

switch循环的一个小bug
我现在有一个函数inet_ntoa返回的是char*型的,假如这个返回值变量是a,我想在switch循环里,把判断条件改成

switch(&a)
   case "192.168.1.1"
         语句1;
        break;
   case "192.168.1.2"
         语句2;
        break;
   case "192.168.1.3"
         语句3;
        break;

这样的效果,报错,反正switch里面用&不行,case后面也不是常量(我纳闷了,一个字符型的为什么不是常量)。请问怎么改?
(PS:原先是这样的,在if里面判断strcmp(inet_ntoa(addrClient.sin_addr), "192.168.1.1")),如果返回0说明inet_ntoa函数返回的指针指向的和后面那个指针一样。总之呢,就是想把嵌套的if改成switch,怎么办?
------解决思路----------------------
而且switch是用等号进行比较的,你既然用了strcmp,应该知道为什么不能用等号比较字符串
------解决思路----------------------
第一、switch不是循环,只等效于if else
第二、char *a = "abc";  那么a表示的是该字符串  &a表示的是这个指针的地址
第三、字符串比较不能用“==”   switch case则是用“==”  用“==”比较两个字符串比较的是地址,不是它们的内容 当然,按照编译器对双引号引起来的字符串的处理方式,a == “abc” 这种写法或许也可以达到你要的效果,不过最好永远不要这样写
------解决思路----------------------
switch 只能适用于直接可以比较的类型,如int, bool 等