首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以将指针指向的char与char进行比较吗?[等候接听]

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

Stack Overflow用户
提问于 2019-06-10 05:51:13
回答 1查看 0关注 0票数 0

我想比较一个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。

EN

回答 1

Stack Overflow用户

发布于 2019-06-10 15:06:36

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

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

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

if(*(ptr+1) == 'P' || *(ptr+2 )== 'P')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档