如何比较指针和整数?

时间:2015-06-14 10:15:12

标签: c pointers char

我试图检查指针是否指向某个字符。

像这样:

#include<stdio.h>
#include<string.h>
#define a 3
int func(char *);
int main()
{
char *s="a";
int type;
type=func(s);
printf("%d",type);

    return 0;
}
int func(char *s)
{
int type;
if(*s=="a") 
{
type=1;
}
return type;

}

但是我经常收到警告:警告:指针和整数之间的比较  如果(* S ==&#34;&#34)

是否可以比较指针和整数?

还有其他方法可以解决这个问题吗?

我可以在不打印的情况下找出哪个字母指向* s?

2 个答案:

答案 0 :(得分:6)

"a"不是字符,而是字符串文字。 'a'是一个字符文字,这是你在这里寻找的。

另请注意,在您的比较*s == "a"中,实际上"a"是指针,*s是整数... * dereferences {{ 1}},这导致s(整数)存储在char指向的地址。但是,字符串文字充当指向字符串s的第一个字符的指针。

此外,如果您通过将比较更改为"a"来修正比较,则只会检查*s == 'a'第一个字符是否为s。如果您想比较字符串,请参阅'a'

答案 1 :(得分:1)

{{ host | markdownify | remove: '<p>' | remove: '</p>' }} 括在char而不是''

""