我想比较一个char
在char 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。
发布于 2019-06-10 15:06:36
你的代码调用未定义的行为(UB),因为指针ptr
指向数组的第一个元素arr
,然后你通过将指针分别减少一个和两个来执行指针算术,然后分别在两个if条件下,然后取消引用它!
长话短说,这相当于做arr[-1]
和arr[-2]
超出界限,并调用UB。
你需要的是增加分别一个和两个,指针,因为我认为你要检查,如果第二或数组的第三个要素是等于'P'
。如果是这种情况,请尝试以下方法:
if(*(ptr+1) == 'P' || *(ptr+2 )== 'P')
https://stackoverflow.com/questions/-100006973
复制相似问题