我可以将指针指向的char与char进行比较吗?[等候接听]

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (11)

我想比较一个charchar arr[];用一个指针变量炭/焦炭。但我无法在C中与==运营商这样做,任何人都可以帮忙吗?

{ 
    i=0;
    char *ptr=&arr[i];    // values are 'A','P','P','A'

    if(*(ptr-1) == 'P' || *(ptr-2 )== 'P')    
    {
        int flag=1;
    }
    else
       int flag=0;
}

据我说,旗帜的价值应该是1, 但我得到0。

提问于
用户回答回答于

你的代码调用未定义的行为(UB),因为指针ptr指向数组的第一个元素arr,然后你通过将指针分别减少一个和两个来执行指针算术,然后分别在两个if条件下,然后取消引用它!

长话短说,这相当于做arr[-1]arr[-2]超出界限,并调用UB。

你需要的是增加分别一个和两个,指针,因为我认为你要检查,如果第二或数组的第三个要素是等于'P'。如果是这种情况,请尝试以下方法:

if(*(ptr+1) == 'P' || *(ptr+2 )== 'P')

扫码关注云+社区

领取腾讯云代金券